---
title: RUNNINGSUM – ยอดสะสมบนแกนของ Visual Calculations
url: https://www.thepexcel.com/functions/dax/visual-calculations/runningsum-dax/
type: function-explainer
program: DAX
syntax: "RUNNINGSUM(<Column>[, <Axis>][, <OrderBy>][, <Blanks>][, <Reset>])"
date: 2025-12-13
updated: 2025-12-25
scores:
  popularity: 5
  difficulty: 4
  usefulness: 6
---

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

> RUNNINGSUM คำนวณยอดสะสมของคอลัมน์/นิพจน์ตามลำดับบนแกนของ Visual Calculations โดยสามารถกำหนด Axis, Or

## คำอธิบาย

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

## Syntax

```excel
RUNNINGSUM(&lt;Column&gt;[, &lt;Axis&gt;][, &lt;OrderBy&gt;][, &lt;Blanks&gt;][, &lt;Reset&gt;])
```

**Variant**

```excel
RUNNINGSUM(&lt;Column&gt;)
```

คำนวณยอดสะสมตามแกนและการเรียงเริ่มต้นของ visual

**Variant**

```excel
RUNNINGSUM(&lt;Column&gt;, &lt;Axis&gt;)
```

ระบุแกนที่ใช้คำนวณยอดสะสม

## Arguments

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

## เคสการใช้งาน

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

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

_เหมาะกับ:_ running-total-visual

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

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

_เหมาะกับ:_ running-total-by-group

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: ยอดขายสะสมตามวันบน Visual

```excel
Sales Running Total = RUNNINGSUM([Total Sales])
```

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

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

### 2. ตัวอย่างที่ 2: ยอดขายสะสมกับการรีเซ็ตตามปี

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

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

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

### 3. ตัวอย่างที่ 3: ต้นทุนสะสมตามเงื่อนไขลำดับ

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

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

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

### 4. ตัวอย่างที่ 4: เปรียบเทียบกับการทำยอดสะสมแบบ Measure

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

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

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

## หมายเหตุเพิ่มเติม

- ผมแนะนำให้ศึกษา Visual Calculations ใน Power BI Desktop ให้เข้าใจแนวคิดก่อน (ใช้ Create → Calculated column for visual) เพราะ RUNNINGSUM ต้องการความเข้าใจเกี่ยวกับแกนและลำดับของกริด

- ส่วนตัวผมมักใช้ RUNNINGSUM สำหรับกราฟเดียว (เช่น sales trend ที่ต้องการเห็นยอดสะสมโตขึ้น) ส่วนสำหรับการรายงานทั่วไป ผมทำยอดสะสมด้วย CALCULATE + DATESBETWEEN หรือ time intelligence ฟังก์ชันมากกว่า

- ระวัง Reset parameter เพราะมันอาจรีเซ็ตเมื่อเข้า parent level ใหม่ ทำให้ยอดสะสมเริ่มใหม่ ซึ่งบางครั้งนั่นสิ่งที่คุณต้องการแต่บางครั้งไม่ใช่

## คำถามที่พบบ่อย

**Q: RUNNINGSUM ต่างจาก MOVINGAVERAGE อย่างไร?**

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

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

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

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

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

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

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

## ฟังก์ชันที่เกี่ยวข้อง

- movingaverage
- window
- offset-dax
- [INDEX – ดึงแถวตามตำแหน่งภายในเพาร์ติชัน](https://www.thepexcel.com/functions/dax/filter/index-dax/)
- calculate
- datesytd
- datesbetween
- orderby
- [FILTER – กรองตารางด้วยเงื่อนไขที่ซับซ้อน (Iterator Function)](https://www.thepexcel.com/functions/dax/filter/filter-dax/)

## แหล่งข้อมูลเพิ่มเติม

- [DAX Guide: RUNNINGSUM](https://dax.guide/runningsum/) _(guide)_
- [SQLBI: Visual Calculations](https://www.sqlbi.com/articles/visual-calculations-in-power-bi/) _(guide)_
- [Microsoft Learn: RUNNINGSUM](https://learn.microsoft.com/en-us/dax/runningsum) _(official)_

---

_Source: [https://www.thepexcel.com/functions/dax/visual-calculations/runningsum-dax/](https://www.thepexcel.com/functions/dax/visual-calculations/runningsum-dax/)_
