Thep Excel

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

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

=TOTALMTD(<Expression>, <Dates> [, <Filter>])

By ThepExcel AI Agent
13 December 2025

Function Metrics


Popularity
6/10

Difficulty
4/10

Usefulness
7/10

Syntax & Arguments

=TOTALMTD(<Expression>, <Dates> [, <Filter>])

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

How it works

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

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

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

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

Examples

ตัวอย่างที่ 1: ยอดขายสะสมตั้งแต่ต้นเดือน (พื้นฐาน)
Sales MTD = TOTALMTD( [Sales Amount], 'Date'[Date] )
เมื่อวางใน pivot หรือ Matrix ไว้ที่แต่ละแถว DAX จะดูว่า "วันที่สำคัญคืออะไร" (filter context) แล้วหา MTD ของเดือนนั้น ถ้าขาดจำนวนวันก็จะน้อยลงไปตามธรรมชาติ
DAX Formula:

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

Result:

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

ตัวอย่างที่ 2: ยอดขาย MTD สำหรับหมวดสินค้าเฉพาะ (เงื่อนไข)
Electronics Sales MTD = TOTALMTD( [Sales Amount], 'Date'[Date], Product[Category] = "Electronics" )
ใช้ Filter argument (parameter ตัวที่ 3) เพื่อจำกัดเฉพาะ Electronics ก่อนที่จะรวม โดยยังคงรวมตั้งแต่ต้นเดือน
DAX Formula:

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

Result:

เฉพาะยอดขายของสินค้าไฟฟ้า ตั้งแต่วันแรกเดือน

ตัวอย่างที่ 3: ยอดขาย MTD กับเมเชอร์ที่ซับซ้อน
Profit Margin MTD = TOTALMTD( [Profit Margin %], 'Date'[Date] ) -- ที่ไหน [Profit Margin %] = DIVIDE([Profit], [Sales Amount])
สามารถใส่เมเชอร์ที่เป็น DAX expression ตรงไปตรงมา ไม่จำเป็นต้องเป็นแค่ SUM(column) เช่นได้เป็น AVG หรือ COUNT ก็ได้
DAX Formula:

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

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

Result:

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

ตัวอย่างที่ 4: เทียบเคียง TOTALMTD กับ CALCULATE + DATESMTD
-- วิธีที่ 1: ใช้ TOTALMTD (สั้น) Sales MTD v1 = TOTALMTD([Sales Amount], 'Date'[Date]) -- วิธีที่ 2: ใช้ CALCULATE + DATESMTD (ซับซ้อนกว่า) Sales MTD v2 = CALC…
TOTALMTD เป็น 'sugar syntax' หรือ 'shortcut' ของ CALCULATE + DATESMTD ทำให้โค้ดสั้นและอ่านง่ายกว่า ส่วนตัวผมแนะนำใช้ TOTALMTD ถ้าเป็นไปได้
DAX Formula:

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

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

Result:

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

FAQs

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

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

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

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

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

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

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

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

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

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

Resources & Related

Additional Notes

TOTALMTD คือฟังก์ชัน Time Intelligence ใน DAX ที่ใช้ “รวมค่า Expression ตั้งแต่วันแรกของเดือนจนถึงวันที่ล่าสุดในบริบทปัจจุบัน” นอกจากนี้ยังรองรับการใส่เงื่อนไขเพิ่มเติม (optional Criteria) ให้คล่องตัวมากขึ้น

ส่วนตัวผมคิดว่า TOTALMTD สะดวกดีสำหรับการทำรายงาน KPI รายเดือน เพราะไม่ต้องจำ DATESMTD และเขียน CALCULATE ด้วยตัวเอง ถ้าเข้าใจ “filter context” ที่มันสร้าง ก็จะนำมาใช้ได้จนเก่งเลยครับ 😎

สำหรับฟังก์ชันตระกูล TOTAL* ใน DAX มี TOTALYTD (year-to-date) และ TOTALQTD (quarter-to-date) เป็นเพื่อน ลักษณะการใช้เหมือนกัน แค่ช่วงเวลาต่างกัน

Leave a Reply

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