Thep Excel

PARTITIONBYแบ่งกลุ่มก่อนคำนวณใน Window Functions

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

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

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

อัปเดต 13 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด ค่าเริ่มต้น คำอธิบาย
Column column คอลัมน์ที่ใช้แบ่งกลุ่ม (partition) ก่อนทำ window calculation
[Column2]ไม่บังคับ column ไม่ระบุ คอลัมน์เพิ่มเติมสำหรับแบ่งกลุ่ม

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

Additional Notes

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

แนวคิดคือ: PARTITIONBY แบ่งกลุ่ม, ORDERBY เรียงในกลุ่ม, และ MATCHBY ช่วยระบุเอกลักษณ์ของแถวในกรณีที่ลำดับมีค่าซ้ำ

How it works

ดึงอันดับที่ N ภายในแต่ละกลุ่ม

เช่นดึงสินค้าขายดีอันดับ 1 ภายในแต่ละหมวด

เลื่อนแถวก่อนหน้า/ถัดไปภายในกลุ่ม

เช่นเทียบยอดขายกับแถวก่อนหน้าในหมวดเดียวกัน

Examples

ตัวอย่างที่ 1: INDEX อันดับ 1 ต่อหมวด (แนวคิด)อันดับ 1 ต่อหมวด (แนวคิด) = INDEX( 1, SUMMARIZECOLUMNS(Product[Category], Product[ProductKey], "Sales", [Total Sales]), ORDERBY([Sales], DESC), PARTITIONBY(Prod…

PARTITIONBY ทำให้ INDEX เลือกตำแหน่งภายในแต่ละหมวด แทนที่จะเลือกจากทั้งตารางรวมกัน

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

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

OFFSET จะเลื่อนตำแหน่งโดยไม่ข้ามไปข้ามหมวด เพราะมีการแบ่งกลุ่มไว้ก่อน

fx
=แถวก่อนหน้าในหมวด (แนวคิด) =
OFFSET(
-1,
SUMMARIZECOLUMNS(Product[Category], Product[ProductKey], "Sales", [Total Sales]),
ORDERBY([Sales], DESC),
PARTITIONBY(Product[Category])
)

ผลลัพธ์ได้แถวก่อนหน้าภายในหมวดเดียวกันตามลำดับยอดขาย
ตัวอย่างที่ 3: ใช้คู่กับ MATCHBY เมื่อมีค่าซ้ำ (แนวคิด)แนวคิด: PARTITIONBY แบ่งกลุ่ม, ORDERBY เรียง, MATCHBY ระบุแถวเมื่อค่าซ้ำ

เมื่อคีย์เรียงมีค่าซ้ำ การเพิ่ม MATCHBY จะช่วยให้การระบุแถวปัจจุบันชัดขึ้น

fx
=แนวคิด: PARTITIONBY แบ่งกลุ่ม, ORDERBY เรียง, MATCHBY ระบุแถวเมื่อค่าซ้ำ

ผลลัพธ์ช่วยให้ผลลัพธ์นิ่งและกำหนดได้ชัดเจน

FAQs

PARTITIONBY ใช้เดี่ยว ๆ ได้ไหม?+

โดยหลักใช้ภายใน window functions (OFFSET/INDEX/WINDOW) เพื่อกำหนดการแบ่งกลุ่ม

ถ้าไม่ใช้ PARTITIONBY จะเกิดอะไรขึ้น?+

การคำนวณตำแหน่ง/การเลื่อนแถวจะทำบนชุดข้อมูลรวมทั้งหมด (ไม่แบ่งกลุ่ม) ซึ่งอาจไม่ตรงกับสิ่งที่ต้องการ

Resources & Related

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

ฟังก์ชันนี้PARTITIONBYFilter
Filter (4)
INDEX

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

MATCHBY

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

ORDERBY

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

WINDOW

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

Visual calculations (1)
RUNNINGSUM

RUNNINGSUM คำนวณยอดสะสมของคอลัมน์/นิพจน์ตามลำดับบนแกนของ Visual Calculations โดยสามารถกำหนด Axis, OrderBy, Blanks และ Reset เพื่อควบคุมลำดับและจุดเริ่มสะสม

Comments

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