Thep Excel

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

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

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

ความนิยม3/10
ความยาก5/10
ประโยชน์3/10

อัปเดต 13 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด ค่าเริ่มต้น คำอธิบาย
Column column คอลัมน์ที่ใช้ระบุและจับคู่แถวปัจจุบันภายในกลุ่ม
[Column2]ไม่บังคับ column ไม่ระบุ คอลัมน์เพิ่มเติมเพื่อช่วยระบุเอกลักษณ์ของแถว

[ ] = อาร์กิวเมนต์ที่ไม่บังคับ

Additional Notes

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

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

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] มีค่าซ้ำ

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

ผลลัพธ์ได้ค่ายอดขายของแถวก่อนหน้าตามลำดับที่กำหนด
ตัวอย่างที่ 2: ใช้ MATCHBY กับ INDEX (แนวคิด)แถวอันดับ 1 ต่อหมวด (แนวคิด) = INDEX( 1, SUMMARIZECOLUMNS(Product[Category], Product[ProductKey], "Sales", [Total Sales]), ORDERBY([Sales], DESC), PARTITIONBY(P…

ตัวอย่างนี้สื่อแนวคิด: MATCHBY ใช้เพื่อระบุเอกลักษณ์ของแถวใน window functions

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

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

เหมาะเมื่อคอลัมน์เดียวไม่พอทำให้แถวมีเอกลักษณ์

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

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

FAQs

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

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

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

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

Resources & Related

ฟังก์ชันที่ผู้เขียนโยงไว้กับ MATCHBY จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง

ฟังก์ชันนี้MATCHBYFilter
Filter (5)
INDEX

INDEX ดึงแถวจากตำแหน่งที่ระบุ (Position) ภายในกลุ่มข้อมูลที่เรียงแล้ว โดยสามารถใช้ ORDERBY และ PARTITIONBY เพื่อควบคุมลำดับและการแบ่งกลุ่ม เหมาะสำหรับงาน window function เช่นดึงค่าอันดับที่ N

LOOKUP

LOOKUP ค้นหาและดึงค่าจากเมทริกซ์ภาพ (visual matrix) ในการคำนวณภาพโดยการระบุเงื่อนไขการกรอง ใช้เฉพาะในการคำนวณภาพเท่านั้น

ORDERBY

ORDERBY ระบุลำดับการเรียงลำดับ (ASC/DESC) และการจัดการค่าว่าง สำหรับ window functions เช่น INDEX, OFFSET, WINDOW เพื่อกำหนดลำดับของแถวภายในกลุ่ม

PARTITIONBY

PARTITIONBY ระบุคอลัมน์ที่ใช้แบ่งกลุ่มสำหรับ window functions เพื่อให้การเลื่อน/เลือกตำแหน่งเกิดขึ้น “ภายในกลุ่ม” ตามที่กำหนด มักใช้ร่วมกับ ORDERBY และ MATCHBY

WINDOW

WINDOW ดึงช่วงแถวภายในพาร์ทิชัน คืนค่าเป็นตาราง เหมาะกับการคำนวณแบบช่วง เช่น moving average, running sum, หรือ lead/lag analysis

Comments

อีเมลของคุณจะไม่ถูกเผยแพร่