Thep Excel

RUNNINGSUMยอดสะสมบนแกนของ Visual Calculations

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

fx
=RUNNINGSUM(<Column>[, <Axis>][, <OrderBy>][, <Blanks>][, <Reset>])

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

อัปเดต 13 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด ค่าเริ่มต้น คำอธิบาย
Column column_or_expression คอลัมน์หรือนิพจน์ที่ต้องการสะสมบนกริดของ visual
[Axis]ไม่บังคับ axis แกนเริ่มต้นของ visual (row context) อ้างอิงแกนของ visual ที่ใช้เป็นลำดับสำหรับการสะสม (ROWS หรือ COLUMNS) ถ้าไม่ระบุ จะใช้แกน row context ปัจจุบัน
[OrderBy]ไม่บังคับ orderby_expression ลำดับเริ่มต้นของ visual กำหนดการเรียงลำดับบนแกน ใช้ <axis>[<value>] เพื่อระบุคอลัมน์และลำดับ
[Blanks]ไม่บังคับ text DEFAULT วิธีจัดการค่าว่าง ระบุ “DEFAULT” (ตัวเลือกเริ่มต้น) หรือรูปแบบอื่นตามความจำเป็น
[Reset]ไม่บังคับ text_or_integer ไม่มีการรีเซ็ต เงื่อนไขการรีเซ็ตยอดสะสม เช่น “HIGHESTPARENT” จะรีเซ็ตเมื่อไปแม่กลุ่มถัดไป หรือกำหนดเป็นจำนวนแถว

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

Additional Notes

RUNNINGSUM ใช้คำนวณ “ยอดสะสม” (running total) ตามแกนที่ระบุของ Visual Calculations โดยสะสมจากจุดแรกของแกนไปยังจุดปัจจุบัน เหมาะกับการวาดกราฟขยายตัว เช่น ยอดขายสะสมตามวัน หรือต้นทุนสะสมตามอาจารย์อิสระบน visual

ที่เจ๋งคือ RUNNINGSUM ถูกออกแบบเฉพาะสำหรับ Visual Calculations (ตัวคำนวณบนกริดของ visual โดยตรง) มากกว่าการเขียน measure ทั่วไป มันอาศัยลำดับแถวและแกนของ visual โดยอัตโนมัติ ถ้าเปลี่ยนลำดับหรือโครงสร้างแกน ผลลัพธ์ก็เปลี่ยนตามไป

ส่วนตัวผมถือว่า RUNNINGSUM เป็นเครื่องมือสำหรับงาน visual ที่ละเอียด ไม่ใช่ measure ที่ใช้บ่อยๆ ถ้าต้องทำยอดสะสมใน measure ปกติ ผมยังใช้ CALCULATE กับ FILTER วิธีดั้งเดิมมากกว่า เพราะมันชัดเจนและควบคุมได้ดี

How it works

ทำกราฟยอดขายสะสมบน visual

แสดงยอดขายสะสมตามแกนเวลาใน visual โดยไม่ต้องเขียนสูตรสะสมแบบ FILTER เอง

สะสมภายในกลุ่มบน visual

ใช้ร่วมกับการจัดแกน/การแบ่งกลุ่มของ visual เพื่อสะสมภายในกลุ่ม

Examples

ตัวอย่างที่ 1: ยอดขายสะสมตามวันบน VisualSales Running Total = RUNNINGSUM([Total Sales])

ใช้เมื่อต้องการเห็นยอดสะสมเพิ่มขึ้นไปเรื่อยๆบนกราฟ เช่นกราฟลูกษณ์ S ของยอดขาย

fx
Sales Running Total = RUNNINGSUM([Total Sales])

ผลลัพธ์ได้ค่า Total Sales แบบสะสมตามลำดับวันที่แสดงบน visual (วันแรก=จำนวนวันแรก, วันสอง=วันแรก+วันสอง, …).
ตัวอย่างที่ 2: ยอดขายสะสมกับการรีเซ็ตตามปีAnnual Sales Running = RUNNINGSUM([Total Sales], ROWS(), , HIGHESTPARENT)

เหมาะกับตาราง hierarchical ที่ต้องการยอดสะสมของแต่ละปีแยกกัน ไม่ให้คิดสะสมข้ามปี

fx
Annual Sales Running = RUNNINGSUM([Total Sales], ROWS(), <Sales[Year]>, HIGHESTPARENT)

ผลลัพธ์ยอดสะสมของยอดขายตามแกน ROWS แล้วรีเซ็ตเมื่อเข้าปีใหม่ (ตามที่ HIGHESTPARENT ระบุ)
ตัวอย่างที่ 3: ต้นทุนสะสมตามเงื่อนไขลำดับCost Running = RUNNINGSUM([Unit Cost], ROWS(), )

เมื่อต้อการควบคุมลำดับสะสม เช่น ต้องรองประวัติ cost ตามลำดับเวลาที่กำหนด

fx
Cost Running = RUNNINGSUM([Unit Cost], ROWS(), <Sales[Date]>)

ผลลัพธ์ได้ต้นทุนแบบสะสมตามลำดับวันที่ที่ระบุใน OrderBy (อาจเรียงจากเก่าไปใหม่ หรือใหม่ไปเก่า)
ตัวอย่างที่ 4: เปรียบเทียบกับการทำยอดสะสมแบบ MeasureClassic Running = VAR CurrentDate = MAX(Sales[Date]) RETURN CALCULATE(SUM(Sales[Amount]), Sales[Date]

วิธีดั้งเดิมที่ใช้งาน measure ปกติ ไม่ใช้ Visual Calculations ดีสำหรับ report ที่ต้องการควบคุมที่เดียว

fx
Classic Running = VAR CurrentDate = MAX(Sales[Date]) RETURN CALCULATE(SUM(Sales[Amount]), Sales[Date] <= CurrentDate)

ผลลัพธ์ยอดสะสมตามวันปัจจุบันโดยใช้ CALCULATE กับ FILTER

FAQs

RUNNINGSUM ต่างจาก MOVINGAVERAGE อย่างไร?+

RUNNINGSUM สะสมค่า (รวมสะสม) ส่วน MOVINGAVERAGE คำนวณค่าเฉลี่ยของช่วง n แถวก่อนหน้า ทั้งสอง đều ใช้ Visual Calculations แต่วัตถุประสงค์ต่างกัน

ต้องใช้ RUNNINGSUM อยู่ที่ไหน?+

ใช้ใน Visual Calculations (สร้างใน Power BI Desktop วิธี Create → Calculated column for visual) ไม่ใช่ใน DAX measure ปกติ ถ้าต้องการยอดสะสมใน measure ให้ใช้ CALCULATE กับ FILTER แทน

ผลลัพธ์ RUNNINGSUM ไม่ตรงที่คาด ทำไม?+

ให้ตรวจสิ่งต่อไปนี้: (1) visual ใช้แกนอะไร (ROWS or COLUMNS) (2) ลำดับของแกนตามที่กำหนดใน OrderBy (3) มีการ Reset ที่ค่อนข้างซูมลึก (HIGHESTPARENT) หรือไม่ เพราะ RUNNINGSUM อาศัยโครงสร้างกริดของ visual อย่างสิ้นเชิง

ถ้า visual มีค่าว่างในแกน จะเกิดอะไร?+

ขึ้นอยู่กับพารามิเตอร์ Blanks ที่กำหนด DEFAULT จะปล่อยให้ระบบจัดการแบบอัตโนมัติ สามารถระบุ FIRST หรือ LAST เพื่อบังคับให้ค่าว่างไปที่ต้น/ท้าย

Resources & Related

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

ฟังก์ชันนี้RUNNINGSUMVisual calculations
Filter (3)
CALCULATE

CALCULATE เป็นฟังก์ชันหลักที่สำคัญที่สุดใน DAX ใช้สำหรับ evaluate expression ภายใต้ filter context ที่ถูกปรับเปลี่ยน สามารถเพิ่มตัวกรองใหม่ ลบตัวกรองเดิม หรือแทนที่ filter ที่มีอยู่ได้ รองรับทั้ง Boolean expression และ table expression เป็น filter arguments พร้อม filter modifier functions เช่น REMOVEFILTERS, ALL, ALLEXCEPT, KEEPFILTERS เพื่อควบคุมการกรองอย่างละเอียด มีพฤติกรรมพิเศษคือ context transition ที่เปลี่ยน row context เป็น filter context โดยอัตโนมัติ ทำให้เป็นเครื่องมือหลักในการสร้าง measure ที่ซับซ้อนและ calculated column ที่ต้องใช้ aggregation

ORDERBY

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

PARTITIONBY

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

Visual calculations (1)
MOVINGAVERAGE

MOVINGAVERAGE คำนวณค่าเฉลี่ยเคลื่อนที่ (moving average) บนแกนของ Visual Calculations ในตารางข้อมูล เหมาะสำหรับทำเส้นแนวโน้มที่เรียบขึ้นและลดความผันผวนของข้อมูล

Aggregation (1)
SUMX

SUMX เป็น iterator function ที่ทรงพลังใน DAX ออกแบบมาเพื่อวนลูปทีละแถวในตารางที่กำหนด แล้วคำนวณ expression ที่ซับซ้อนสำหรับแต่ละแถวก่อนนำผลลัพธ์ทั้งหมดมารวมกัน ต่างจาก SUM ที่รวมเฉพาะค่าใน column เดียว SUMX สร้าง row context สำหรับแต่ละแถว ทำให้สามารถคำนวณ expression อย่าง Quantity × Price หรือใช้ RELATED ดึงข้อมูลข้ามตารางได้ มีกลไก context transition อัตโนมัติเมื่อเจอ measure ในนั้น เหมาะสำหรับการคำนวณซับซ้อนระดับแถวข้อมูล ประหยัดพื้นที่ model เพราะไม่ต้องสร้าง calculated column แต่ช้ากว่า SUM และไม่รองรับ DirectQuery mode ใน calculated columns หรือ RLS rules

Comments

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