หน้าแรก บทความ Microsoft
Microsoft

จัดอันดับใน Excel แบบไม่มีเลขข้าม อันดับในกลุ่ม และอันดับไม่ซ้ำ

เผยแพร่ 29 ส.ค. 69

RANK.EQ จัดอันดับพื้นฐาน แต่พองานจริงมักเจอโจทย์เพิ่ม เช่น “อันดับที่ไม่มีเลขข้ามเวลามีคะแนนเท่ากัน” “อันดับแยกตามกลุ่ม” หรือ “ทำให้ทุกคนได้อันดับไม่ซ้ำ” บทความนี้รวมสูตรจัดอันดับแบบต่างๆ ที่ RANK.EQ เดี่ยวๆ ทำไม่ได้

ทบทวน: RANK.EQ ปกติจะเว้นเลขเมื่อมีตัวเสมอ

C2fx=RANK.EQ(B2, $B$2:$B$6, 0)
A B C
1 ชื่อ ยอดขาย อันดับ
2 ก้อง 500 1
3 แนน 300 2
4 เจน 300 2
5 ปุ๊ก 200 4

แนนกับเจนได้อันดับ 2 เท่ากัน อันดับถัดไปจึงกระโดดไปเป็น 4 (ไม่มีอันดับ 3)

แบบที่ 1: อันดับไม่มีเลขข้าม (Dense Rank)

C2fx=SUMPRODUCT((($B$2:$B$6>B2)/COUNTIF($B$2:$B$6,$B$2:$B$6)))+1
A B C
1 ชื่อ ยอดขาย อันดับ (dense)
2 ก้อง 500 1
3 แนน 300 2
4 เจน 300 2
5 ปุ๊ก 200 3

คราวนี้ปุ๊กได้อันดับ 3 (ไม่กระโดด) สูตรนับ “จำนวนค่าที่มากกว่า” แบบไม่นับซ้ำ ด้วยการหารด้วย COUNTIF ของตัวเอง

แบบที่ 2: บังคับให้อันดับไม่ซ้ำกันเลย

C2fx=RANK.EQ(B2,$B$2:$B$6,0) + COUNTIF($B$2:B2, B2) - 1
A B C
1 ชื่อ ยอดขาย อันดับ (ไม่ซ้ำ)
2 ก้อง 500 1
3 แนน 300 2
4 เจน 300 3
5 ปุ๊ก 200 4

ตัวที่เสมอกัน ตัวที่เจอทีหลังจะถูกดันลงไปหนึ่งอันดับ (แนน = 2, เจน = 3) ใช้ตอนต้องมีผู้ชนะเดียวหรือจับสลากลำดับ

แบบที่ 3: อันดับภายในกลุ่ม

D2fx=COUNTIFS($A$2:$A$7, A2, $C$2:$C$7, ">"&C2) + 1
A B C D
1 ห้อง ชื่อ คะแนน อันดับในห้อง
2 ก้อง 80 2
3 แนน 90 1
4 เจน 70 1
5 ปุ๊ก 65 2

COUNTIFS นับว่าในห้องเดียวกันมีกี่คนที่คะแนนสูงกว่า แล้วบวก 1 ได้อันดับภายในห้องนั้นๆ เปลี่ยน > เป็น < ถ้าน้อยแล้วดี (เช่น เวลาวิ่ง)

แบบที่ 4: จัดอันดับด้วย 2 เกณฑ์

เช่น เรียงตามคะแนนก่อน ถ้าเท่ากันให้ดูเวลาที่น้อยกว่า สร้างคีย์รวม แล้ว RANK

=SUMPRODUCT(($B$2:$B$7*1000 - $C$2:$C$7 > B2*1000 - C2)*1) + 1

คูณคะแนนด้วย 1000 เพื่อให้มีน้ำหนักหลัก แล้วลบเวลาออกเป็นตัวตัดสินรอง ปรับตัวคูณตามช่วงข้อมูลจริง

ข้อควรรู้

หมายเหตุ: บทความนี้เขียนและเรียบเรียงโดย AI

← กลับหน้าบทความ
Line