---
title: TOTALMTD – ยอดสะสมตั้งแต่ต้นเดือน (MTD)
url: https://www.thepexcel.com/functions/dax/time-intelligence/totalmtd-dax/
type: function-explainer
program: DAX
syntax: "TOTALMTD(<Expression>, <Dates> [, <Filter>])"
date: 2025-12-13
updated: 2025-12-23
scores:
  popularity: 6
  difficulty: 4
  usefulness: 7
---

# TOTALMTD – ยอดสะสมตั้งแต่ต้นเดือน (MTD)

> คำนวณยอดสะสมตั้งแต่ต้นเดือน (Month-to-Date) ของ Expression ตามคอลัมน์วันที่ที่กำหนด เป็นทางลัดของ CA

## คำอธิบาย

คำนวณยอดสะสมตั้งแต่ต้นเดือน (Month-to-Date) ของ Expression ตามคอลัมน์วันที่ที่กำหนด เป็นทางลัดของ CALCULATE + DATESMTD

## Syntax

```excel
TOTALMTD(&lt;Expression&gt;, &lt;Dates&gt; [, &lt;Filter&gt;])
```

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| Expression | Yes | scalar |  | นิพจน์/เมเชอร์ที่ต้องการคำนวณยอดสะสม เช่น [Sales Amount], SUM(Sales[Amount]), เป็นต้น |
| Dates | Yes | column |  | คอลัมน์วันที่จากตารางวันที่ที่มีความต่อเนื่องและถูกกำหนดเป็น Date table (แนะนำ) เช่น Date[Date] |
| Filter | No | expression | ไม่ระบุ (รวมข้อมูลทั้งหมด) | เงื่อนไขเพิ่มเติมที่ต้องการนำมารวมในการคำนวณ เช่น Product[Category] = "Electronics" (ตัวอย่าง Boolean expression) |

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

### ยอดขายสะสมรายเดือน

แสดงยอดสะสมตั้งแต่ต้นเดือนถึงวันที่เลือก/บริบทปัจจุบัน

_เหมาะกับ:_ mtd-sales

### ทำ KPI แบบสะสมรายเดือน

ใช้กับเมเชอร์อื่น เช่น จำนวนคำสั่งซื้อ/กำไร เพื่อทำตัวชี้วัดสะสม

_เหมาะกับ:_ mtd-kpi

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: ยอดขายสะสมตั้งแต่ต้นเดือน (พื้นฐาน)

```excel
Sales MTD =
TOTALMTD(
    [Sales Amount],
    'Date'[Date]
)
```

**ผลลัพธ์:** `ถ้าวันนี้คือ 15 ตุลาคม 2024 → จะรวมยอดขายตั้งแต่ 1 ตุลาคม ถึง 15 ตุลาคม`

เมื่อวางใน pivot หรือ Matrix ไว้ที่แต่ละแถว DAX จะดูว่า "วันที่สำคัญคืออะไร" (filter context) แล้วหา MTD ของเดือนนั้น ถ้าขาดจำนวนวันก็จะน้อยลงไปตามธรรมชาติ

### 2. ตัวอย่างที่ 2: ยอดขาย MTD สำหรับหมวดสินค้าเฉพาะ (เงื่อนไข)

```excel
Electronics Sales MTD =
TOTALMTD(
    [Sales Amount],
    'Date'[Date],
    Product[Category] = "Electronics"
)
```

**ผลลัพธ์:** `เฉพาะยอดขายของสินค้าไฟฟ้า ตั้งแต่วันแรกเดือน`

ใช้ Filter argument (parameter ตัวที่ 3) เพื่อจำกัดเฉพาะ Electronics ก่อนที่จะรวม โดยยังคงรวมตั้งแต่ต้นเดือน

### 3. ตัวอย่างที่ 3: ยอดขาย MTD กับเมเชอร์ที่ซับซ้อน

```excel
Profit Margin MTD =
TOTALMTD(
    [Profit Margin %],
    'Date'[Date]
)

-- ที่ไหน [Profit Margin %] = DIVIDE([Profit], [Sales Amount])
```

**ผลลัพธ์:** `เปอร์เซ็นต์กำไรสะสมตั้งแต่ต้นเดือน (AVERAGE ในความเป็นจริง)`

สามารถใส่เมเชอร์ที่เป็น DAX expression ตรงไปตรงมา ไม่จำเป็นต้องเป็นแค่ SUM(column) เช่นได้เป็น AVG หรือ COUNT ก็ได้

### 4. ตัวอย่างที่ 4: เทียบเคียง TOTALMTD กับ CALCULATE + DATESMTD

```excel
-- วิธีที่ 1: ใช้ TOTALMTD (สั้น)
Sales MTD v1 = TOTALMTD([Sales Amount], 'Date'[Date])

-- วิธีที่ 2: ใช้ CALCULATE + DATESMTD (ซับซ้อนกว่า)
Sales MTD v2 = CALCULATE([Sales Amount], DATESMTD('Date'[Date]))
```

**ผลลัพธ์:** `ทั้ง v1 และ v2 ให้ผลลัพธ์เดียวกัน`

TOTALMTD เป็น 'sugar syntax' หรือ 'shortcut' ของ CALCULATE + DATESMTD ทำให้โค้ดสั้นและอ่านง่ายกว่า ส่วนตัวผมแนะนำใช้ TOTALMTD ถ้าเป็นไปได้

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

- ถ้าต้อง MTD แต่มีหลายหมวดสินค้า สามารถสร้างหลาย measure ด้วยเงื่อนไขต่างกัน เหมือนที่แนะนำใน Example 2

- ใช้ TOTALMTD ร่วมกับ % DIFFERENCE ได้ เช่น เทียบ MTD ปีนี้กับปีที่แล้ว

- ส่วนตัวชอบวางใน Matrix พร้อมกับ Year/Month slicers เพื่อให้เห็นความแปรปรวน MTD ของแต่ละเดือน

- ถ้าค่า MTD ไม่ตรงคาด ให้ตรวจสอบโครงสร้างตารางวันที่ รวมถึงความสัมพันธ์กับตาราง Fact

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

**Q: TOTALMTD ต้องใช้กับตารางวันที่แบบไหน?**

ควรใช้กับคอลัมน์วันที่จากตารางวันที่ที่มีความต่อเนื่อง (ไม่มีช่องว่าง) และถูกกำหนดเป็น "Date table" ใน Power BI/Excel Model เพื่อให้ DAX Time Intelligence ทำงานถูกต้อง

**Q: TOTALMTD ต่างจาก DATESMTD อย่างไร?**

DATESMTD คืน 'ตารางวันที่' (table) ส่วน TOTALMTD คืน 'ผลลัพธ์ของ Expression' (scalar value) นอกจากนี้ DATESMTD ต้องใส่ใน CALCULATE เอง ขณะที่ TOTALMTD ทำให้เราออกจากความยุ่งวุ่นวาย

**Q: TOTALMTD มี Filter argument ต้องใช้ FILTER() function หรือ?**

ไม่จำเป็น! ส่วนมากใช้ Boolean expression เช่น Product[Category] = "Electronics" ได้เลย ถ้าต้องกรองเงื่อนไขที่ซับซ้อน (virtual column หรือ expression) เท่านั้นค่อยใช้ FILTER()

**Q: ทำไม MTD ของฉันไม่ตรงคาด หรือแสดง 0?**

ตรวจสอบ 3 สิ่ง: (1) ตารางวันที่มีความต่อเนื่องไหม (ไม่มีช่องว่าง), (2) มีความสัมพันธ์กับตาราง Fact ถูกต้อง, (3) ตารางวันที่ถูกกำหนดเป็น Date table ในโมเดล

**Q: TOTALMTD ใช้ได้ในฟังก์ชัน calculated column หรือเฉพาะ measure?**

ใช้ได้ในทั้ง measure และ calculated column ปกติใช้มากใน measure เพราะ context ชัดเจน ถ้าใช้ใน calculated column ต้องระวัง row context ที่มันสร้าง

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

- [Microsoft Learn - TOTALMTD](https://learn.microsoft.com/en-us/dax/totalmtd-function-dax) _(official)_
- [DAX Guide - TOTALMTD](https://dax.guide/totalmtd/) _(guide)_
- [SQLBI - Time Intelligence in DAX](https://www.sqlbi.com/articles/time-intelligence-functions-in-dax/) _(guide)_

---

_Source: [https://www.thepexcel.com/functions/dax/time-intelligence/totalmtd-dax/](https://www.thepexcel.com/functions/dax/time-intelligence/totalmtd-dax/)_
