Thep Excel

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

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

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

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

อัปเดต 13 December 2025

Syntax & Arguments

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

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

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) เป็นเพื่อน ลักษณะการใช้เหมือนกัน แค่ช่วงเวลาต่างกัน

How it works

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

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

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

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

Examples

ตัวอย่างที่ 1: ยอดขายสะสมตั้งแต่ต้นเดือน (พื้นฐาน)Sales MTD = TOTALMTD( [Sales Amount], 'Date'[Date] )

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

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

ผลลัพธ์ถ้าวันนี้คือ 15 ตุลาคม 2024 → จะรวมยอดขายตั้งแต่ 1 ตุลาคม ถึง 15 ตุลาคม
ตัวอย่างที่ 2: ยอดขาย MTD สำหรับหมวดสินค้าเฉพาะ (เงื่อนไข)Electronics Sales MTD = TOTALMTD( [Sales Amount], 'Date'[Date], Product[Category] = "Electronics" )

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

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

ผลลัพธ์เฉพาะยอดขายของสินค้าไฟฟ้า ตั้งแต่วันแรกเดือน
ตัวอย่างที่ 3: ยอดขาย MTD กับเมเชอร์ที่ซับซ้อนProfit Margin MTD = TOTALMTD( [Profit Margin %], 'Date'[Date] ) — ที่ไหน [Profit Margin %] = DIVIDE([Profit], [Sales Amount])

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

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

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

ผลลัพธ์เปอร์เซ็นต์กำไรสะสมตั้งแต่ต้นเดือน (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 ถ้าเป็นไปได้

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

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

ผลลัพธ์ทั้ง 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

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

ฟังก์ชันนี้TOTALMTDTime Intelligence
Time Intelligence (8)
CLOSINGBALANCEMONTH

CLOSINGBALANCEMONTH ประเมิน Expression ณ วันสิ้นเดือนของบริบทวันที่ปัจจุบัน เหมาะกับการทำมาตรวัดยอดคงเหลือปลายเดือน และรองรับการใส่ตัวกรองเพิ่มเติม

DATESBETWEEN

DATESBETWEEN คืนตารางวันที่ที่อยู่ระหว่าง StartDate และ EndDate (รวมวันเริ่ม/วันจบ) เหมาะกับการใช้เป็นตัวกรองเวลาใน CALCULATE เพื่อคำนวณตามช่วงวันที่ที่กำหนดเอง

DATESMTD

DATESMTD คืนตารางวันที่ของช่วงตั้งแต่ต้นเดือนถึงวันที่ล่าสุดใน filter context เหมาะกับการทำยอดสะสมตั้งแต่ต้นเดือน (MTD) โดยใช้ร่วมกับ CALCULATE และควรใช้คู่กับ ShowValueForDates pattern เพื่อไม่ให้แสดงค่าในวันที่ยังไม่มีข้อมูล

ENDOFMONTH

ENDOFMONTH คืนตารางวันที่ของวันสิ้นเดือนตามปฏิทิน เหมาะกับ Semi-Additive Calculations เช่น ยอดคงเหลือ, Inventory, หรือ Closing Balance ที่ต้องการ snapshot ณ สิ้นเดือน ไม่ว่าจะมีข้อมูลจริงในวันนั้นหรือไม่

STARTOFMONTH

STARTOFMONTH คืนวันแรกของเดือนเป็นตาราง 1 แถว ใช้กับการวัดที่ขึ้นต่อจุดเวลา เช่น ยอดคงเหลือ บัญชี หรือสินค้าคงคลัง

TOTALQTD

TOTALQTD คำนวณยอดสะสมตั้งแต่วันแรกของไตรมาส (Q1/Q2/Q3/Q4) จนถึงวันที่ล่าสุดใน filter context ปัจจุบัน
.
ส่วนตัวผมใช้บ่อยมากตอน analyze quarterly performance และการวิเคราะห์ KPI รายไตรมาสครับ

TOTALWTD

คำนวณยอดสะสมตั้งแต่ต้นสัปดาห์ (Week-to-Date) ของ Expression ตามคอลัมน์วันที่ที่กำหนด โดยรวมข้อมูลจากวันแรกของสัปดาห์จนถึงวันปัจจุบันในบริบท

TOTALYTD

TOTALYTD คำนวณยอดสะสมตั้งแต่ต้นปี (Year-to-Date) ของ expression ใดๆ โดยอิงจาก Date table และสามารถกำหนด fiscal year end date เพื่อรองรับปีงบประมาณที่ไม่ตรงกับปีปฏิทินได้
.
ส่วนตัวผมใช้บ่อยมากตอนต้องวิเคราะห์ยอดขาย KPI และรายงานทางการเงินที่ต้องการติดตามความก้าวหน้าตลอดทั้งปีครับ

Filter (1)
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

Comments

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