คลังสูตรExcel 80 · DAX 95 · M 15
ในหน้านี้
หน้าแรก › DAX › จัดอันดับ (Ranking) › RANKX

RANKX

DAX · Power BIจัดอันดับ (Ranking)ระดับกลางแบบ 3 · แนวคิดเดียวกัน คนละฟังก์ชัน

อัปเดต 27 ก.ย. 2569 · ตัวเลขในตัวอย่างตรงกับตัวคำนวณอ้างอิงที่เขียนแยก และสูตร Excel ที่คำนวณจากข้อมูลชุดเดียวกัน · ยังไม่ได้ตรวจใน Power BI Desktop

เอกสารอ้างอิง: RANKX (Microsoft Learn) · syntax และหมายเหตุในหน้านี้ตรวจกับหน้านี้ของ Microsoft · ตัวจำลองในหน้านี้รองรับเฉพาะรูปแบบที่ใช้ในตัวอย่าง (เช่น ไม่รองรับ calendar-based time intelligence)

RANKX คืออะไร

จัดอันดับค่าของแถวปัจจุบันเทียบกับทุกแถวของตารางที่กำหนด ค่าที่มากที่สุดได้อันดับ 1 (ค่าเริ่มต้น)

ใช้เมื่อไหร่

  • จัดอันดับภาค พนักงาน หรือสินค้าตามยอดขาย
  • แสดงอันดับคู่กับตัวเลขใน Matrix

รูปแบบสูตร

=RANKX(<table>, <expression>[, <value>[, <order>[, <ties>]]])

Argument แต่ละตัว

ชี้ที่ argument ในรูปแบบสูตรด้านบนเพื่อไฮไลต์แถวนั้น

Argumentจำเป็นไหมความหมาย
tableจำเป็นรายการที่ใช้เทียบ มักใช้ ALL('ตาราง'[คอลัมน์]) ให้ได้ทุกค่า
expressionจำเป็นค่าที่ใช้จัดอันดับ คำนวณทีละแถวของ table
[value]ไม่บังคับค่าที่ต้องการหาอันดับ ไม่ใส่ = ค่าของ expression ในช่องปัจจุบัน
[order]ไม่บังคับDESC (ค่าเริ่มต้น มากได้อันดับ 1) หรือ ASC
[ties]ไม่บังคับSkip (ค่าเริ่มต้น เสมอกันแล้วข้ามอันดับ) หรือ Dense (ไม่ข้าม)

ลองเลย: อันดับยอดขายของแต่ละภาค

คลิกตัวเลขในตารางเพื่อดูตัวกรองไหลผ่านโมเดลจนเป็นตัวเลขนั้น เลือกค่าใน Slicer แก้ Measure ได้ หรือกด Excel เพื่อดูสูตร Excel ที่ได้คำตอบเดียวกัน

[ยอดขาย] = SUMX('ยอดขาย', 'ยอดขาย'[จำนวน] * 'ยอดขาย'[ราคาต่อหน่วย] * (1 - 'ยอดขาย'[ส่วนลด]))
[อันดับ (เฉพาะแถวภาค)] = IF(HASONEVALUE('พนักงานขาย'[ภูมิภาค]), RANKX(ALL('พนักงานขาย'[ภูมิภาค]), [ยอดขาย]))
Ctrl + Enter คำนวณ · พิมพ์ ' เลือกตาราง · [ เลือกคอลัมน์หรือ Measure
  • พนักงานขาย[ภูมิภาค] = "กลาง"
  • สินค้าไม่มีตัวกรอง
  • วันที่[ปี] = 2025
  • ยอดขายเหลือ 96 จาก 495 แถว · หนึ่งจุดคือหนึ่งคำสั่งซื้อ
อันดับยอดขายของแต่ละภาค
อันดับยอดขายของแต่ละภาค · ใช้ลูกศรเลื่อนระหว่างช่อง Enter เพื่อดูว่าตัวเลขนั้นคำนวณอย่างไร
ภูมิภาคยอดขายอันดับภาคอันดับ (เฉพาะแถวภาค)
กลาง
เหนือ
ตะวันออกเฉียงเหนือ
ตะวันออก
ใต้
ยอดรวม
1อันดับภาค · กลาง · 2025
ดูทีละขั้นขั้น 4 / 4

ถ้าคุณเขียน Excel อยู่แล้ว

EXCEL=RANK.EQ(B2, $B$2:$B$6)

Excel จัดอันดับตัวเลขในช่วงของชีต DAX จัดอันดับจากค่าที่คำนวณใหม่ทุกแถวของตารางที่บอก

DAXอันดับภาค = RANKX(ALL('พนักงานขาย'[ภูมิภาค]), [ยอดขาย])

ALL ทำให้เทียบกับทุกภาค ไม่ใช่แค่ภาคในแถว

ข้อผิดพลาดและเคล็ดลับ

แถวยอดรวมได้อันดับ 1 เพราะยอดรวมมากกว่าทุกภาค ใช้ IF(HASONEVALUE(…), RANKX(…)) ให้แถวยอดรวมว่าง
ถ้าใช้ RANKX('พนักงานขาย'[ภูมิภาค], …) โดยไม่มี ALL ทุกแถวจะได้อันดับ 1 เพราะในแถวนั้นมีภาคเดียวให้เทียบ
ค่าว่างถูกนับเป็น 0 ในการจัดอันดับ ภาคที่ไม่มียอดจึงได้อันดับท้าย

แบบทดสอบ 3 ข้อ

1. RANKX(ALL('พนักงานขาย'[ภูมิภาค]), [ยอดขาย]) ภาคที่ยอดขายมากที่สุดได้อันดับใด

2. ไม่ใส่ ALL เป็น RANKX('พนักงานขาย'[ภูมิภาค], [ยอดขาย]) ได้อะไร

3. ทำให้แถวยอดรวมไม่แสดงอันดับ เขียนแบบใด

ไฟล์ฝึก RANKX

9Expert-DAX-RANKX-Practice-v1.0.xlsx

รุ่น 1.0 · 26/9/2026 · 70 KB · ไม่มี Macro · นำเข้า Power BI แล้วทำโจทย์ พิมพ์คำตอบกลับในไฟล์ ตรวจเอง
เริ่มต้นยอดขายสินค้าพนักงานขายวันที่คงคลังเป้าภูมิภาคแบบฝึกหัดเฉลย

โจทย์ในชีตแบบฝึกหัด

  1. ข้อ 1[อันดับภาค] อันดับยอดขายของภาคเทียบกับทุกภาค (มากที่สุด = 1) · กรอง ภูมิภาค = ใต้, ปี = 2024
  2. ข้อ 2[อันดับภาค] อันดับยอดขายของภาคเทียบกับทุกภาค (มากที่สุด = 1) · กรอง ภูมิภาค = ตะวันออกเฉียงเหนือ, ช่องทาง = Online, ปี = 2025
  3. ข้อ 3[ยอดขาย] ยอดขายสุทธิ (จำนวน × ราคาต่อหน่วย × (1 − ส่วนลด)) · กรอง ภูมิภาค = เหนือ, ปี = 2025
  4. ข้อ 4[ยอดขาย] ยอดขายสุทธิ (จำนวน × ราคาต่อหน่วย × (1 − ส่วนลด)) · กรอง ภูมิภาค = ตะวันออก, ช่องทาง = Modern Trade, ปี = 2024
  5. ข้อ 5[ยอดขาย] ยอดขายสุทธิ (จำนวน × ราคาต่อหน่วย × (1 − ส่วนลด)) · กรอง ปี = 2025

ไปต่อ

อยากเขียน DAX สำหรับรายงานจริงทั้งระบบ

ต่อยอดใน Data Analysis Expression (DAX) for Power BI: Measures, X Aggregation, CALCULATE, Date Table และ Time Intelligence (2 วัน)

ดูหลักสูตร