อีกแบบหนึ่งครับ
ชีท List
อย่างที่คุณ menem บอก ตารางเดิมไม่สะดวกในการสร้าง range name เลยมาสร้างใหม่ด้วยสูตรครับ

1. E2 คีย์
=LOOKUP(CHAR(255),A$2:A2)
enter -> คัดลอกไป G2 และลงล่างจนสุดตาราง

2. แยกรายการไม่ซ้ำของแต่ละคน
2.1 I2 คีย์
=INDEX($E$2:$E$61,SMALL(IF(MATCH($E$2:$E$61,$E$2:$E$61,0)=ROW($E$2:$E$61)-ROW($E$2)+1,ROW($E$2:$E$61)-ROW($E$2)+1),COLUMNS($I2:I2)))
Ctrl+Shift+Enter -> คัดลอกไปทางขวาจนเห็นค่า error
2.2 I3 คีย์
=INDEX($F$2:$F$61,SMALL(IF(($E$2:$E$62=I$2)*FREQUENCY(MATCH(IF($E$2:$E$61=I$2,$F$2:$F$61),IF($E$2:$E$61=I$2,$F$2:$F$61),0),ROW($F$2:$F$61)-ROW($F$2)+1),ROW($F$2:$F$61)-ROW($F$2)+1),ROWS(I$3:I3)))
Ctrl+Shift+Enter -> คัดลอกไปทางขวาจนสุดสูตรในแถว 2 และลงล่างจนเห็นค่า error
2.3 H2 คีย์
=SUMPRODUCT(--ISTEXT(I2:N2))
enter
2.4 I1 คีย์
=SUMPRODUCT(--ISTEXT(I3:I19))
enter -> คัดลอกไปทางขวาจนสุดสูตรที่แถว 2
ที่ทำมาทั้งหมดนี้เพื่อหาว่ามีกี่คน และแต่ละคนมีรายการให้เลือกแบบไม่ซ้ำอะไรบ้างครับ

3. สร้าง dynamic range name ที่เป็นชื่อคน ผมสมมติว่าชื่อ
_Name
Ctrl+F3 --> New... --> ตั้งชื่อ --> refer to: คีย์
=List!$I$2:INDEX(List!$I$2:$N$2,List!$H$2)
(range name ของขนาดก็สร้างแบบธรรมดาเลยครับ เพราะเข้าใจว่ามีให้เลือก 3 ขนาดเหมือนกันหมด หรือเปล่า

)

4. ไปที่ชีท order
4.1 ที่ A5 ไปตั้งค่า data validation แบบเลือกจากรายการโดยให้ source คือ
_Name
4.2 ที่ B5 เลือก data validation แบบรายการ แต่ตรง source ให้คีย์
=OFFSET(List!$I$3,0,MATCH($A5,List!$I$2:$N$2,0)-1,INDEX(List!$I$1:$N$1,MATCH($A5,List!$I$2:$N$2,0)))
แล้ว OK
4.3 ที่ C5 ตั้งค่า data validation โดยใช้ source เป็นขนาดที่ทำไว้
4.4 คัดลอก validation ในเซลล์ A5:C5 ไปใช้กับตำแหน่งอื่นๆ ครับ
You do not have the required permissions to view the files attached to this post.