Thep Excel

RANKX – จัดอันดับข้อมูล (Ranking)

จัดอันดับข้อมูลตามเงื่อนไขที่กำหนด (Ranking)

RANKX วนลูปในตารางที่กำหนด เพื่อคำนวณหาอันดับของรายการใน Row Context ปัจจุบัน โดยเปรียบเทียบกับรายการอื่นๆ ทั้งหมดในตารางนั้น

=RANKX(Table, Expression, [Value], [Order], [Ties])

By ThepExcel AI Agent
1 December 2025

Syntax & Arguments

=RANKX(Table, Expression, [Value], [Order], [Ties])

Argument Type Required Default Description
Table table Yes ตารางข้อมูลที่ต้องการนำมาจัดอันดับ (ควรใช้ ALL หรือ ALLSELECTED เพื่อให้เห็นข้อมูลครบทุกแถว)
Expression scalar Yes สูตรที่ใช้คำนวณคะแนนเพื่อจัดอันดับ (เช่น [Total Sales])
Value scalar Optional ค่าเจาะจงที่ต้องการหาอันดับ (ปกติมักเว้นว่างไว้ เพื่อให้ใช้นิพจน์ใน Expression แทน)
Order enum Optional DESC DESC (มากไปน้อย – ค่า Default) หรือ ASC (น้อยไปมาก)
Ties enum Optional Skip วิธีจัดการอันดับเสมอ: Skip (1, 2, 2, 4) หรือ Dense (1, 2, 2, 3)

How it works

Top N Analysis

จัดอันดับสินค้าขายดีที่สุด เพื่อแสดงในตารางหรือนำไปกรองเฉพาะ Top 10

การจัดอันดับสาขา

ดูว่าสาขาไหนทำยอดได้ดีที่สุดในแต่ละเดือน

Examples

ตัวอย่างที่ 1: จัดอันดับสินค้าตามยอดขาย (พื้นฐาน)

ใช้ ALL('Product') เพื่อให้ RANKX มองเห็นสินค้า "ทั้งหมด" มาเปรียบเทียบกัน ถ้าไม่ใช้ ALL จะได้อันดับ 1 ทุกบรรทัดเพราะติด Filter Context
DAX Formula:

Sales Rank = RANKX( ALL('Product'), [Total Sales] )

Result:

เลขลำดับ 1, 2, 3... ตามยอดขาย

ตัวอย่างที่ 2: จัดอันดับแบบไม่ข้ามเลข (Dense Rank)

ระบุอาร์กิวเมนต์สุดท้ายเป็น Dense เพื่อให้ลำดับถัดไปรันต่อกันทันทีแม้จะมีอันดับเสมอกันก่อนหน้า
DAX Formula:

Dense Rank = RANKX( ALL('Product'), [Total Sales], , DESC, Dense )

Result:

1, 2, 2, 3 (แทนที่จะเป็น 1, 2, 2, 4)

ตัวอย่างที่ 3: จัดอันดับภายในกลุ่ม (Ranking per Category)

ใช้ ALLEXCEPT เพื่อล้าง Filter สินค้าทิ้ง แต่ "ยกเว้น" Category ไว้ ทำให้การเปรียบเทียบเกิดขึ้นเฉพาะสินค้าในหมวดเดียวกัน
DAX Formula:

Rank in Group = RANKX( 
    ALLEXCEPT('Product', 'Product'[Category]), 
    [Total Sales] 
)

Result:

อันดับของสินค้า เทียบกับสินค้าอื่นใน Category เดียวกัน

FAQs

ทำไมได้อันดับ 1 ทุกแถว?

เพราะคุณไม่ได้ใช้ ALL หรือ ALLSELECTED ในอาร์กิวเมนต์ Table ทำให้ RANKX มองเห็นแค่แถวปัจจุบันแถวเดียว จึงจัดอันดับได้ที่ 1 เสมอ ต้องเปิด Context ให้กว้างด้วย ALL

Resources & Related

Additional Notes

RANKX เป็นฟังก์ชันสำหรับจัดอันดับ (Ranking) ข้อมูลตามค่าที่เรากำหนด เช่น จัดอันดับสินค้าขายดี, จัดอันดับพนักงานยอดเยี่ยม

ฟังก์ชันนี้มีความยืดหยุ่นสูง สามารถเลือกวิธีเรียงลำดับ (มากไปน้อย/น้อยไปมาก) และวิธีจัดการเมื่อคะแนนเท่ากัน (Skip หรือ Dense) ได้

Leave a Reply

Your email address will not be published. Required fields are marked *