Thep Excel

MATCHBY – กำหนดคอลัมน์สำหรับระบุแถวปัจจุบัน (Window Functions)

MATCHBY ระบุคอลัมน์ที่ใช้จับคู่และระบุแถวปัจจุบันใน window functions เพื่อให้การเลื่อน/เลือกตำแหน่งแถวทำงานถูกต้องเมื่อมีค่า ORDERBY ซ้ำ หรือเมื่อจำเป็นต้องกำหนดเอกลักษณ์ของแถว

=MATCHBY(<Column>[, <Column>])

By ThepExcel AI Agent
13 December 2025

Function Metrics


Popularity
3/10

Difficulty
5/10

Usefulness
3/10

Syntax & Arguments

=MATCHBY(<Column>[, <Column>])

Argument Type Required Default Description
Column column Yes คอลัมน์ที่ใช้ระบุและจับคู่แถวปัจจุบันภายในกลุ่ม
Column2 column Optional ไม่ระบุ คอลัมน์เพิ่มเติมเพื่อช่วยระบุเอกลักษณ์ของแถว

How it works

ทำให้ผลของ OFFSET/INDEX นิ่งขึ้นเมื่อ ORDERBY มีค่าซ้ำ

ถ้าหลายแถวมีค่าที่ใช้เรียงเท่ากัน ให้เพิ่ม MATCHBY เพื่อระบุแถวให้ชัด

ใช้คีย์หลายคอลัมน์เพื่อระบุแถว

เช่นใช้ ProductKey + Date เพื่อให้แถวมีเอกลักษณ์

Examples

ตัวอย่างที่ 1: ใช้ MATCHBY กับ OFFSET (แนวคิด)
ยอดขายแถวก่อนหน้า (แนวคิด) = VAR t = OFFSET( -1, SUMMARIZECOLUMNS(Product[ProductKey], "Sales", [Total Sales]), ORDERBY([Sales], DESC), MATCHBY(Product[ProductK…
MATCHBY ช่วยให้การระบุแถวปัจจุบันชัดเจนขึ้นเมื่อ [Sales] มีค่าซ้ำ
DAX Formula:

=ยอดขายแถวก่อนหน้า (แนวคิด) =
VAR t =
    OFFSET(
        -1,
        SUMMARIZECOLUMNS(Product[ProductKey], "Sales", [Total Sales]),
        ORDERBY([Sales], DESC),
        MATCHBY(Product[ProductKey])
    )
RETURN
MINX(t, [Sales])

Result:

ได้ค่ายอดขายของแถวก่อนหน้าตามลำดับที่กำหนด

ตัวอย่างที่ 2: ใช้ MATCHBY กับ INDEX (แนวคิด)
แถวอันดับ 1 ต่อหมวด (แนวคิด) = INDEX( 1, SUMMARIZECOLUMNS(Product[Category], Product[ProductKey], "Sales", [Total Sales]), ORDERBY([Sales], DESC), PARTITIONBY(P…
ตัวอย่างนี้สื่อแนวคิด: MATCHBY ใช้เพื่อระบุเอกลักษณ์ของแถวใน window functions
DAX Formula:

=แถวอันดับ 1 ต่อหมวด (แนวคิด) =
INDEX(
    1,
    SUMMARIZECOLUMNS(Product[Category], Product[ProductKey], "Sales", [Total Sales]),
    ORDERBY([Sales], DESC),
    PARTITIONBY(Product[Category]),
    MATCHBY(Product[ProductKey])
)

Result:

ได้ตาราง 1 แถวตามตำแหน่งที่เลือก

ตัวอย่างที่ 3: ใช้หลายคอลัมน์เพื่อระบุแถว (แนวคิด)
MATCHBY หลายคีย์ (แนวคิด) = MATCHBY(Sales[ProductKey], Sales[OrderDate])
เหมาะเมื่อคอลัมน์เดียวไม่พอทำให้แถวมีเอกลักษณ์
DAX Formula:

=MATCHBY หลายคีย์ (แนวคิด) =
MATCHBY(Sales[ProductKey], Sales[OrderDate])

Result:

กำหนดคีย์ผสมเพื่อระบุแถว

FAQs

MATCHBY ใช้ได้กับฟังก์ชันอะไร?

ใช้กับกลุ่ม window functions เช่น OFFSET, INDEX, WINDOW และมักใช้ร่วมกับ ORDERBY/PARTITIONBY

จำเป็นต้องใช้ MATCHBY ทุกครั้งไหม?

ไม่จำเป็นเสมอไป แต่ถ้าลำดับที่กำหนดมีค่าซ้ำและทำให้ผลไม่นิ่ง การเพิ่ม MATCHBY จะช่วยให้การระบุแถวชัดเจนขึ้น

Resources & Related

Additional Notes

MATCHBY ใช้ภายในกลุ่มฟังก์ชัน Window Functions (เช่น OFFSET, INDEX, WINDOW) เพื่อกำหนดว่า “คอลัมน์ใด” จะถูกใช้ในการระบุและจับคู่แถวปัจจุบันเมื่อคำนวณตำแหน่ง/การเลื่อนแถว ช่วยให้ผลลัพธ์นิ่งขึ้นในกรณีที่การเรียงลำดับ (ORDERBY) มีค่าซ้ำหรือมีแถวที่ดูเหมือนกัน

แนวคิดคือ: ORDERBY กำหนดลำดับ, PARTITIONBY กำหนดกลุ่ม, และ MATCHBY ช่วยระบุเอกลักษณ์ของแถวเพื่อให้การ “แมตช์แถวปัจจุบัน” ทำได้ถูกต้องตามที่คุณตั้งใจ

Leave a Reply

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