Thep Excel

DATESYTD – ชุดวันที่ตั้งแต่ต้นปี (YTD) เพื่อใช้เป็นตัวกรองเวลา

DATESYTD คืนตารางวันที่ของช่วงตั้งแต่ต้นปีถึงวันที่สุดท้ายที่มองเห็นใน Filter Context ใช้เป็นตัวกรองเวลาใน CALCULATE สำหรับการคำนวณยอดสะสมตั้งแต่ต้นปี รองรับทั้งปีปฏิทินและปีบัญชี (Fiscal Year) ด้วย YearEndDate argument

=DATESYTD(<Dates>[, <YearEndDate>])

By ThepExcel AI Agent
13 December 2025

Function Metrics


Popularity
7/10

Difficulty
4/10

Usefulness
8/10

Syntax & Arguments

=DATESYTD(<Dates>[, <YearEndDate>])

Argument Type Required Default Description
Dates column Yes คอลัมน์วันที่จากตารางวันที่ (Date Table) ต้องเป็นคอลัมน์ที่มีวันที่ครบต่อเนื่อง
YearEndDate text Optional "12-31" วันสิ้นปีบัญชีในรูปแบบ “MM-DD” เช่น “03-31”, “06-30”, “09-30” ถ้าไม่ระบุจะใช้ปีปฏิทินปกติ

How it works

ทำยอดสะสมตั้งแต่ต้นปี

ใช้เป็นตัวกรองเวลาเพื่อให้มาตรวัดคำนวณเฉพาะช่วงตั้งแต่ต้นปี

ทำยอดสะสมตามปีบัญชี

กำหนด YearEndDate เพื่อให้ช่วงสะสมอิงปีบัญชี

Examples

ตัวอย่างที่ 1: ยอดขายสะสมตั้งแต่ต้นปี (พื้นฐาน)
Sales YTD = CALCULATE( [Sales Amount], DATESYTD('Date'[Date]) )
DATESYTD('Date'[Date]) คืนชุดวันที่ตั้งแต่ 1 มกราคมถึงวันที่สุดท้ายใน Filter Context แล้ว CALCULATE ใช้ชุดนั้นแทนที่ Filter เดิมครับ
DAX Formula:

Sales YTD =
CALCULATE(
    [Sales Amount],
    DATESYTD('Date'[Date])
)

Result:

สมมติ Filter Context คือเดือนมีนาคม 2024 จะได้ยอดขายตั้งแต่ 1 ม.ค. - 31 มี.ค. 2024

ตัวอย่างที่ 2: YTD พร้อมเช็ควันที่ในอนาคต (Best Practice)
Sales YTD = IF( [ShowValueForDates], CALCULATE( [Sales Amount], DATESYTD('Date'[Date]) ) )
Pattern นี้มาจาก DAX Patterns ครับ โดย [ShowValueForDates] เป็น Measure ที่เช็คว่า Date ในบริบทปัจจุบันมีข้อมูลขายจริงหรือไม่ ป้องกันไม่ให้วันในอนาคตแสดงค่าซ้ำของวันสุดท้าย 💡
DAX Formula:

Sales YTD =
IF(
    [ShowValueForDates],
    CALCULATE(
        [Sales Amount],
        DATESYTD('Date'[Date])
    )
)

Result:

แสดงค่า YTD เฉพาะวันที่มีข้อมูลจริง วันในอนาคตจะเป็น BLANK

ตัวอย่างที่ 3: ยอดสะสมตามปีบัญชีสิ้นสุด 30 มิถุนายน
Sales Fiscal YTD = IF( [ShowValueForDates], CALCULATE( [Sales Amount], DATESYTD('Date'[Date], "06-30") ) )
เมื่อกำหนด YearEndDate เป็น "06-30" ปีบัญชีจะเริ่ม 1 กรกฎาคม และสิ้นสุด 30 มิถุนายน ปีถัดไป ช่วง YTD จะถูกนับตามปีบัญชีนี้ครับ 😎
DAX Formula:

Sales Fiscal YTD =
IF(
    [ShowValueForDates],
    CALCULATE(
        [Sales Amount],
        DATESYTD('Date'[Date], "06-30")
    )
)

Result:

ถ้าอยู่เดือนสิงหาคม 2024 จะนับตั้งแต่ 1 ก.ค. 2024 (เริ่มปีบัญชีใหม่)

ตัวอย่างที่ 4: เปรียบเทียบ YTD ปีนี้ vs ปีก่อน
Sales YTD PY = CALCULATE( [Sales YTD], SAMEPERIODLASTYEAR('Date'[Date]) )
ใช้ SAMEPERIODLASTYEAR เลื่อนบริบทกลับไป 1 ปี แล้วคำนวณ [Sales YTD] ได้ยอดสะสมของปีก่อนในช่วงเดียวกัน เหมาะทำ YoY Comparison ครับ
DAX Formula:

Sales YTD PY =
CALCULATE(
    [Sales YTD],
    SAMEPERIODLASTYEAR('Date'[Date])
)

Result:

ยอดขาย YTD ของช่วงเดียวกันในปีที่แล้ว

ตัวอย่างที่ 5: Growth % เทียบ YTD ปีก่อน
YTD Growth % = VAR CurrentYTD = [Sales YTD] VAR PreviousYTD = [Sales YTD PY] RETURN DIVIDE( CurrentYTD - PreviousYTD, PreviousYTD )
ใช้ VAR เก็บค่า YTD ปีปัจจุบันและปีก่อน แล้วคำนวณ % Growth ด้วย DIVIDE (ป้องกัน Error ถ้าหารด้วย 0) ได้ผลลัพธ์เป็น % เช่น 0.15 หมายถึงโต 15%
DAX Formula:

YTD Growth % =
VAR CurrentYTD = [Sales YTD]
VAR PreviousYTD = [Sales YTD PY]
RETURN
    DIVIDE(
        CurrentYTD - PreviousYTD,
        PreviousYTD
    )

Result:

เปอร์เซ็นต์การเติบโตของยอด YTD เทียบกับปีก่อน

FAQs

DATESYTD คืนค่าเป็นตารางหรือค่า Scalar?

คืนค่าเป็น Table ของวันที่ครับ จึงต้องใช้คู่กับ CALCULATE เพื่อให้ได้ค่า Scalar จาก Measure ถ้าใช้เดี่ยวๆ จะสร้างเป็น Calculated Table ได้ แต่ไม่ค่อยมีประโยชน์

ทำไมวันที่ในอนาคตถึงแสดงค่า YTD ซ้ำ?

เพราะ DATESYTD จะคืนวันที่ถึงวันสุดท้ายที่มองเห็นใน Filter Context แม้วันนั้นจะยังไม่มีข้อมูลก็ตาม วิธีแก้คือใช้ Pattern IF([ShowValueForDates], …) เพื่อเช็คว่ามีข้อมูลจริงก่อนแสดงค่าครับ 😅

ต้องเตรียม Date Table อย่างไรให้ DATESYTD ทำงานถูกต้อง?

Date Table ต้อง: 1) มีวันที่ครบต่อเนื่อง ไม่มีวันขาด 2) ครอบคลุมตั้งแต่ 1 ม.ค. ถึง 31 ธ.ค. ของทุกปี 3) Mark as Date Table ใน Power BI ถ้าขาดข้อใดข้อหนึ่ง Time Intelligence จะทำงานผิดพลาดครับ

DATESYTD กับ TOTALYTD ต่างกันอย่างไร?

TOTALYTD เป็น Shortcut ที่รวม CALCULATE + DATESYTD ไว้ในฟังก์ชันเดียว เช่น TOTALYTD([Sales], ‘Date'[Date]) เท่ากับ CALCULATE([Sales], DATESYTD(‘Date'[Date])) แต่ถ้าต้องการควบคุมมากขึ้น (เช่น เพิ่ม Filter อื่นๆ) แนะนำใช้ CALCULATE + DATESYTD ครับ

Resources & Related

Related functions

Additional Notes

ส่วนตัวผมมองว่า DATESYTD เป็นหนึ่งในฟังก์ชัน Time Intelligence ที่ใช้บ่อยที่สุด เพราะทุก Dashboard มักจะต้องมียอด Year-to-Date 😎

ข้อกำหนดสำคัญ (Date Table Requirements)

ตาราง Date ต้องมีวันที่ ครบต่อเนื่อง ตั้งแต่ 1 มกราคม ถึง 31 ธันวาคม ของทุกปี และต้อง Mark เป็น Date Table ใน Power BI ด้วยนะครับ ไม่งั้น Time Intelligence จะทำงานไม่ถูกต้อง 💡

Pattern: จัดการวันที่ในอนาคต

เรียกได้ว่าเป็น Best Practice จาก DAX Patterns เลยครับ – ก่อนแสดงค่า YTD ควรเช็คก่อนว่ามีข้อมูลจริงหรือเปล่า ไม่งั้นวันที่ในอนาคตจะแสดงค่าสุดท้ายที่มีซ้ำไปเรื่อยๆ ดูไม่สวย

ส่วนตัวผมมองว่า DATESYTD เป็นหนึ่งในฟังก์ชัน Time Intelligence ที่ใช้บ่อยที่สุด เพราะทุก Dashboard มักจะต้องมียอด Year-to-Date 😎

ข้อกำหนดสำคัญ (Date Table Requirements)

ตาราง Date ต้องมีวันที่ ครบต่อเนื่อง ตั้งแต่ 1 มกราคม ถึง 31 ธันวาคม ของทุกปี และต้อง Mark เป็น Date Table ใน Power BI ด้วยนะครับ ไม่งั้น Time Intelligence จะทำงานไม่ถูกต้อง 💡

Pattern: จัดการวันที่ในอนาคต

เรียกได้ว่าเป็น Best Practice จาก DAX Patterns เลยครับ – ก่อนแสดงค่า YTD ควรเช็คก่อนว่ามีข้อมูลจริงหรือเปล่า ไม่งั้นวันที่ในอนาคตจะแสดงค่าสุดท้ายที่มีซ้ำไปเรื่อยๆ ดูไม่สวย

DATESYTD คืนค่าเป็น ตารางของวันที่ ตั้งแต่วันแรกของปีจนถึงวันที่สุดท้ายที่มองเห็นใน Filter Context (ยอดสะสมตั้งแต่ต้นปี)

ที่ต้องเข้าใจก่อนคือ ฟังก์ชันนี้ ไม่ได้รวมยอดให้เอง แต่ใช้เป็นตัวกรองเวลาใน CALCULATE เพื่อให้ Measure คำนวณเฉพาะช่วง YTD ได้ครับ

ส่วนตัวผมมองว่า DATESYTD เป็นหนึ่งในฟังก์ชัน Time Intelligence ที่ใช้บ่อยที่สุด เพราะทุก Dashboard มักจะต้องมียอด Year-to-Date 😎

ข้อกำหนดสำคัญ (Date Table Requirements)

ตาราง Date ต้องมีวันที่ ครบต่อเนื่อง ตั้งแต่ 1 มกราคม ถึง 31 ธันวาคม ของทุกปี และต้อง Mark เป็น Date Table ใน Power BI ด้วยนะครับ ไม่งั้น Time Intelligence จะทำงานไม่ถูกต้อง 💡

Pattern: จัดการวันที่ในอนาคต

เรียกได้ว่าเป็น Best Practice จาก DAX Patterns เลยครับ – ก่อนแสดงค่า YTD ควรเช็คก่อนว่ามีข้อมูลจริงหรือเปล่า ไม่งั้นวันที่ในอนาคตจะแสดงค่าสุดท้ายที่มีซ้ำไปเรื่อยๆ ดูไม่สวย