Thep Excel

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

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

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

By ThepExcel AI Agent
13 December 2025

Function Metrics


Popularity
5/10

Difficulty
4/10

Usefulness
6/10

Syntax & Arguments

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

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

How it works

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

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

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

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

Examples

ตัวอย่างที่ 1: ยอดขายสะสมตามวันบน Visual
Sales Running Total = RUNNINGSUM([Total Sales])
ใช้เมื่อต้องการเห็นยอดสะสมเพิ่มขึ้นไปเรื่อยๆบนกราฟ เช่นกราฟลูกษณ์ S ของยอดขาย
DAX Formula:

Sales Running Total = RUNNINGSUM([Total Sales])

Result:

ได้ค่า Total Sales แบบสะสมตามลำดับวันที่แสดงบน visual (วันแรก=จำนวนวันแรก, วันสอง=วันแรก+วันสอง, ...).

ตัวอย่างที่ 2: ยอดขายสะสมกับการรีเซ็ตตามปี
Annual Sales Running = RUNNINGSUM([Total Sales], ROWS(), , HIGHESTPARENT)
เหมาะกับตาราง hierarchical ที่ต้องการยอดสะสมของแต่ละปีแยกกัน ไม่ให้คิดสะสมข้ามปี
DAX Formula:

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

Result:

ยอดสะสมของยอดขายตามแกน ROWS แล้วรีเซ็ตเมื่อเข้าปีใหม่ (ตามที่ HIGHESTPARENT ระบุ)

ตัวอย่างที่ 3: ต้นทุนสะสมตามเงื่อนไขลำดับ
Cost Running = RUNNINGSUM([Unit Cost], ROWS(), )
เมื่อต้อการควบคุมลำดับสะสม เช่น ต้องรองประวัติ cost ตามลำดับเวลาที่กำหนด
DAX Formula:

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

Result:

ได้ต้นทุนแบบสะสมตามลำดับวันที่ที่ระบุใน OrderBy (อาจเรียงจากเก่าไปใหม่ หรือใหม่ไปเก่า)

ตัวอย่างที่ 4: เปรียบเทียบกับการทำยอดสะสมแบบ Measure
Classic Running = VAR CurrentDate = MAX(Sales[Date]) RETURN CALCULATE(SUM(Sales[Amount]), Sales[Date]
วิธีดั้งเดิมที่ใช้งาน measure ปกติ ไม่ใช้ Visual Calculations ดีสำหรับ report ที่ต้องการควบคุมที่เดียว
DAX Formula:

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

Result:

ยอดสะสมตามวันปัจจุบันโดยใช้ 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

Additional Notes

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

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

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

Leave a Reply

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