ที่ G15 คีย์ =SUM(G2:G15)
ที่ G16 คีย์ =MAX(G1:G14)
ที่ I1 คีย์ =IF(ROWS($I$1:I1)>$G$15,"",INDEX($F$1:$F$14,SMALL(IF(TRANSPOSE(ROW(INDIRECT("1:"&$G$16)))<=$G$1:$G$14,ROW($G$1:$G$14)-ROW($G$1)+1),ROWS($I$1:I1))))
กด Ctrl+Shift+Enter คัดลอกลงมา
สูตรด้านบน ผมได้แนบลิงค์สำหรับการศึกษาเพิ่มเติมไว้แล้ว อนึ่งสูตรดังกล่าวเป็นสูตรที่ยากมาก ผมต้องบอกว่าผมอธิบายในส่วนนี้ไม่ได้ อาจจะผิดพลาดจากความเป็นจริงได้ครับ ต้องให้อาจารย์เป็นผู้อธิบายจะดีที่สุด ซึ่งวิธีการดังกล่าวนั้นเป็นการแยกข้อมูลออกมาตามจำนวนซ้ำ เช่น 1000000 นับได้ 2 ครั้ง เราแยก 1000000 ออกมา 2 ตัว อยู่ในแกนแนวตั้งโดยใช้ TRANSPOSE ทั้งนี้ข้อมูลเดิมที่คุณได้ทำการนับรวมมาให้นั้นจึงเป็นประโยชน์ต่อการใช้สูตรนี้ครับ
ที่ H1 คีย์ =IF(I1=I2,COUNTIF($I$1:I1,I1),COUNTIF($I$1:I1,I1)+COUNTIF(I2:I2,I1)) คัดลอกลงมา
สูตรที่ยกมานั้น ผมใช้เรียงอันดับข้อมูลที่ซ้ำกัน เพื่อกำหนดเป็นรหัสเฉพาะของข้อมูลนั้นเพื่อใช้ประโยชน์ในการดึงชื่อผู้ถูกรางวัลออกมา ซึ่งเราจะดึงข้อมูลไม่ได้ หรือได้ยากมาก เนื่องจาก ข้อมูลอ้างอิงเหมือนกัน เช่น 1000000 มีคนถูกรางวัล 2 คน คือ นายก. กับ นายข. ถ้าใช้รหัส 1000000 เป็นตัวอ้างอิง มันก็จะดึงค่ามาได้แค่คนเดียวเท่านั้น เพราะเหตุนี้ เราจึงต้องกำกับรหัสเสริมเข้าไปเพื่อให้เกิดความต่างกันของรหัส 1000000 คือ รหัส 1000000 ลำดับที่ 1 รหัส 1000000 ลำดับที่ 2 เป็นต้น เวลาเราใช้สูตรอ้างอิงเพื่อหาคำตอบเราสามารถอ้างอิง 2 ที่ แม้ว่ารหัสจะเหมือนกัน แต่ลำดับไม่ซ้ำกันอย่างแน่นอนครับ
ที่ C1 คีย์ =IF(A1=A2,COUNTIF($A$1:A1,A1),COUNTIF($A$1:A1,A1)+COUNTIF(A2:A2,A1)) คัดลอกลงมา
สูตรนี้ก็เช่นเดียวกันครับ เมื่อกำหนดรหัสปลายทางแล้ว รหัสต้นทางเราก็ต้องกำหนดให้เหมือนกันด้วย เพื่อจะได้ใช้สูตรอ้างอิงกันและกันได้ โดยใช้สูตร Index+Match
ที่ J1 คีย์ =INDEX($B$1:$B$28,MATCH(1,IF($I1=$A$1:$A$28,IF($H1=$C$1:$C$28,1)),0))
กด Ctrl+Shift+Enter คัดลอกลงมา
ในการ Match กันระหว่างรหัส และ ลำดับที่ ของข้อมูลต้นทางและปลายทางโดยใช้ Index+Match พิสูจน์สูตรได้ดังนี้
ไวยากรณ์ของสูตร Index คือ Index(ช่วงข้อมูล,ตำแหน่งข้อมูล) เช่น =INDEX($B$1:$B$28,2) หมายความว่า แสดงค่าของข้อมูลในช่วงข้อมูล $B$1:$B$28 บรรทัดที่ 2
ส่วนการใช้ match เป็นการหาตำแหน่งขอข้อมูลว่าอยู่ในบรรทัดที่เท่าไหร่ (ในส่วนของรูปแบบการใช้สูตรให้ลองศึกษาเองได้ครับ)
อธิบายภาพรวมน่ะครับ ตามไฟล์แนบน่ะครับ
สูตร =INDEX($B$1:$B$28,MATCH(1,IF($I1=$A$1:$A$28,IF($H1=$C$1:$C$28,1)),0))
แยกออกมาแล้ว จะได้ =INDEX($B$1:$B$28) กับ =MATCH(1,IF($I1=$A$1:$A$28,IF($H1=$C$1:$C$28,1)),0)
=MATCH(1,IF($I1=$A$1:$A$28,IF($H1=$C$1:$C$28,1)),0) ได้ค่าออกมาคือ 1
เมื่อรวมกับสูตร Index ก็จะได้ =INDEX($B$1:$B$28,1) หมายความว่าแสดงค่าในบรรดทัด 1 ช่วงข้อมูล B1:B28 คำตอบคือ นายก. ครับ
ผมอธิบายไม่ค่อยชัดเจน ขออภัยด้วยครับ เนื่องจากสูตรนั้นค่อนข้างยาก ตัวผมเองก็ใช้ได้ด้วยความเข้าใจส่วนตัวและจินตนาการส่วนตัว จึงไม่สามารถอธิบายให้ใครเข้าใจได้เหมือนกันทุกคนครับ ต้องศึกษาเองประกอบไปด้วยครับ
