จัดลำดับที่สอบได้ของนักเรียนใน Excel แบบไม่ข้ามลำดับ

สืบเนื่องมาจากบทความ จัดลำดับที่สอบได้ของนักเรียนง่าย ๆ ใน Excel ด้วยฟังก์ชัน RANK() ผมได้นำเสนอวิธีการจัดลำดับที่สอบได้ของนักเรียนโดยใช้งานฟังก์ชัน RANK() ซึ่งก็ใช้งานได้ดี และไม่มีอะไรยุ่งยากเลย แต่การใช้งานฟังก์ชันดังกล่าว ถ้ามีนักเรียนที่มีคแนนเท่ากันหลาย ๆ คน นักเรียนเหล่านั้นจะสอบได้ลำดับที่เท่ากัน ซึ่งก็ถูกแล้ว แต่ปัญหาคือ ลำดับถัด ๆ ไปจะถูกข้ามตามจำนวนนักเรียนที่สอบได้ลำดับเท่ากัน

ตัวอย่างเช่น ถ้ามีนักเรียนสอบได้ลำดับที่ 3 จำนวน 3 คน นักเรียนคนถัดไปที่ได้คะแนนน้อยกว่านักเรียน 3 คนดังกล่าว จะไปอยู่ลำดับที่ 6 แทนที่จะเป็นลำดับที่ 4 ดังภาพด้านล่าง

จากภาพด้านบน มีนักเรียนที่สอบได้ลำดับที่ 3 จำนวน 3 คน (คะแนน 90 เท่ากันทั้ง 3 คน) คนที่ได้คะแนนเป็นลำดับถัดไป (คะแนน 83) สอบได้ลำดับที่ 6 (ลำดับที่ 4 และ 5 ถูกข้ามไป)

คนที่สอบได้ลำดับที่ 12 ก็มี 3 คน ลำดับที่ 13 และ 14 ก็ถูกข้ามไปเช่นเดียวกัน

ซึ่งในบางกรณี เราอาจไม่ต้องการผลลัพธ์แบบนี้ แต่เราต้องการให้ลำดับที่สอบได้เรียงกันไปโดยไม่มีการกระโดดข้าม เช่นจากภาพตัวอย่างด้านบน ถึงแม้จะมีนักเรียนสอบได้ลำดับที่ 3 ถึง 3 คน แต่คนที่มีคะแนนรองลงไปก็ต้องสอบได้ลำดับที่ 4 ไม่ใช้ข้ามไปเป็นลำดับที่ 6 เลย

เราสามารถสร้างผลลัพธ์การจัดลำดับดังกล่าวได้โดยการใช้ฟังก์ชัน SUMPRODUCT() ร่วมกับฟังก์ชัน COUNTIF() โดยมีรูปแบบดังนี้

=SUMPRODUCT((คะแนนของนักเรียนคนปัจจุบัน <= ช่วงคะแนนของนักเรียนทุกคน)/COUNTIF(ช่วงคะแนนของนักเรียนทุกคน, ช่วงคะแนนของนักเรียนทุกคน))

การใช้งาน

สมมติว่าเรามีข้อมูลคะแนนของนักเรียนดังนี้

จากข้อมูลตัวอย่างด้านบน คะแนนของนักเรียนอยู่ที่คอลัมน์ D นักเรียนมีทั้งหมด 24 คน คะแนนอยู่ที่เซลล์ D2 ถึง D25 และเราจะแสดงลำดับที่สอบได้ของนักเรียนแต่ละคนที่คอลัมน์ F

เราจะจัดลำดับให้นักเรียนคนแรกก่อน โดยเขียนสูตรที่เซลล์ F2 ดังนี้

=SUMPRODUCT((D2<=$D$2:$D$25)/COUNTIF($D$2:$D$25,$D$2:$D$25))

ข้อมูลที่ใช้อ้างอิงในสูตรตามลำดับตัวเลข มีดังนี้

  1. เซลล์คะแนนของนักเรียนที่ต้องการจัดลำดับ
  2. ช่วงคะแนนของนักเรียนตั้งแต่คนแรกถึงคนสุดท้าย (ใส่เครื่องหมาย $ เพื่อตรึงเซลล์และคอลัมน์ไว้ด้วย)
  3. ช่วงคะแนนของนักเรียนตั้งแต่คนแรกถึงคนสุดท้าย (ใส่เครื่องหมาย $ เพื่อตรึงเซลล์และคอลัมน์ไว้ด้วย)
  4. ช่วงคะแนนของนักเรียนตั้งแต่คนแรกถึงคนสุดท้าย (ใส่เครื่องหมาย $ เพื่อตรึงเซลล์และคอลัมน์ไว้ด้วย)

เมื่อเขียนสูตรเสร็จ กดปุ่ม Enter ก็จะได้ผลลัพธ์

จากรูป เราได้ผลลัพธ์แล้วว่านักเรียนคนแรกสอบได้ลำดับที่ 20 จากนักเรียนทั้งหมด 24 คน

ทีนี้นำเมาส์ไปชี้ที่มุมขวาด้านล่างของเซลล์ที่เราเพิ่งเขียนสูตรไปเมื่อสักครู่ (เซลล์ที่แสดงลำดับที่สอบได้ของนักเรียนคนแรกนั่นเอง) เมื่อพอยเตอร์เปลี่ยนเป็นเครื่องหมาย ➕ แล้วให้คลิกและลากไปยังเซลล์สุดท้ายเพื่อทำการคัดลอกสูตร

ก็จะได้ผลลัพธ์เป็นลำดับที่สอบได้ของนักเรียนทุกคน โดยไม่มีการข้ามลำดับ

จากรูป จะเห็นได้ว่า มีนักเรียนที่สอบได้ลำดับที่ 3 จำนวน 3 คน คนที่ได้คะแนนรองลงไปก็สอบได้ลำดับที่ 4 ไม่ได้กระโดดข้ามลำดับ และมีนักเรียนที่สอบได้ลำดับที่ 10 จำนวน 3 คน คนที่ได้คะแนนรองลงไปก็สอบได้ลำดับที่ 11 ไม่ได้กระโดดข้ามลำดับเช่นเดียวกัน

ลองนำไปปรับใช้กับการจัดลำดับที่สอบได้ของนักเรียนของท่านดูนะครับ