Thep Excel

DATESBETWEEN – สร้างช่วงวันที่ระหว่างวันเริ่มและวันสิ้นสุด

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

=DATESBETWEEN(<Dates>, <StartDate>, <EndDate>)

By ThepExcel AI Agent
13 December 2025

Function Metrics


Popularity
6/10

Difficulty
4/10

Usefulness
6/10

Syntax & Arguments

=DATESBETWEEN(<Dates>, <StartDate>, <EndDate>)

Argument Type Required Default Description
Dates column Yes คอลัมน์วันที่จากตารางวันที่/ปฏิทิน ต้องเป็นคอลัมน์ที่มีข้อมูลวันที่ต่อเนื่องจริง
StartDate date/datetime/expression Yes วันเริ่มต้นของช่วง (รวมในผลลัพธ์) สามารถเป็นค่า DATE, วันที่จากตัวแปร หรือ BLANK() ถ้า BLANK จะใช้วันที่แรกสุดในคอลัมน์ Dates
EndDate date/datetime/expression Yes วันสิ้นสุดของช่วง (รวมในผลลัพธ์) สามารถเป็นค่า DATE, วันที่จากตัวแปร หรือ BLANK() ถ้า BLANK จะใช้วันที่สุดท้ายในคอลัมน์ Dates

How it works

ยอดขายในช่วงวันที่ที่กำหนด

เช่น ช่วงโปรโมชั่นหรือแคมเปญ

สะสมตั้งแต่วันเริ่มโครงการ

เช่น สะสมยอดตั้งแต่วันเริ่มต้นที่กำหนดจนถึงวันนี้

Examples

ตัวอย่างที่ 1: ยอดขายช่วงแคมเปญ
Sales (Campaign) = CALCULATE( [Sales Amount], DATESBETWEEN( 'DimDate'[Date], DATE(2025, 11, 1), DATE(2025, 11, 30) ) )
DATESBETWEEN สร้างชุดวันที่ของช่วงแคมเปญที่ต้องการ (พ.ย. 2025) แล้ว CALCULATE ใช้ชุดวันที่นั้นเป็นตัวกรองเวลา เพื่อให้ [Sales Amount] นับเฉพาะยอดขายในช่วงนั้น
DAX Formula:

=Sales (Campaign) =
CALCULATE(
    [Sales Amount],
    DATESBETWEEN(
        'DimDate'[Date],
        DATE(2025, 11, 1),
        DATE(2025, 11, 30)
    )
)

Result:

ยอดขายในช่วง 1–30 พ.ย. 2025 เฉพาะ

ตัวอย่างที่ 2: ยอดสะสมตั้งแต่วันเริ่มต้นที่กำหนดจนถึงวันนี้ (Life-to-Date)
Sales (Since Launch) = CALCULATE( [Sales Amount], DATESBETWEEN( 'DimDate'[Date], DATE(2025, 1, 15), TODAY() ) )
เหมาะกับการคำนวณสะสมตั้งแต่วันเริ่มโครงการ โดยใช้ TODAY() เป็นวันสิ้นสุด ช่วยให้เห็นความก้าวหน้าตั้งแต่เปิดตัว
DAX Formula:

=Sales (Since Launch) =
CALCULATE(
    [Sales Amount],
    DATESBETWEEN(
        'DimDate'[Date],
        DATE(2025, 1, 15),
        TODAY()
    )
)

Result:

ยอดขายสะสมตั้งแต่ 15 ม.ค. 2025 ถึงวันนี้

ตัวอย่างที่ 3: ใช้ BLANK() เพื่อให้ครอบคลุมตั้งแต่วันแรกสุด
Sales (Cumulative) = CALCULATE( [Sales Amount], DATESBETWEEN( 'DimDate'[Date], BLANK(), MAX('DimDate'[Date]) ) )
เมื่อ StartDate เป็น BLANK(), DATESBETWEEN จะใช้วันที่แรกสุดในคอลัมน์ 'DimDate'[Date] เป็นจุดเริ่มต้น ส่วน MAX('DimDate'[Date]) คืนวันที่ล่าสุด เหมาะกับการคำนวณยอดสะสมแบบเต็มที่
DAX Formula:

=Sales (Cumulative) =
CALCULATE(
    [Sales Amount],
    DATESBETWEEN(
        'DimDate'[Date],
        BLANK(),
        MAX('DimDate'[Date])
    )
)

Result:

ยอดขายสะสมตั้งแต่วันแรกของข้อมูลจนถึงวันล่าสุด

ตัวอย่างที่ 4: สร้างตารางวันที่เพื่อตรวจสอบผล (Debugging)
Custom Dates = DATESBETWEEN( 'DimDate'[Date], DATE(2025, 6, 1), DATE(2025, 6, 15) )
DATESBETWEEN คืนค่าเป็นตาราง จึงสามารถใช้ในเมื่อ/คำนวณตารางเพื่อดูช่วงวันที่ที่ได้จริง
DAX Formula:

Custom Dates =
DATESBETWEEN(
    'DimDate'[Date],
    DATE(2025, 6, 1),
    DATE(2025, 6, 15)
)

Result:

ตารางวันที่ของช่วง 1–15 มิ.ย. 2025 (15 แถว)

FAQs

DATESBETWEEN คืนค่าเป็นตารางหรือค่าสเกลาร์?

คืนค่าเป็นตารางของวันที่ (Table) จึงมักใช้เป็นตัวกรองภายใน CALCULATE เพื่อให้มาตรวัด (Measure) คืนค่าสเกลาร์ ไม่ใช่ตารางสำเร็จรูป

ควรใช้ Dates จากตารางแบบไหน?

ควรใช้คอลัมน์วันที่จากตารางวันที่ที่ต่อเนื่องและกำหนดเป็นตารางวันที่ของโมเดล (Date Table) เพื่อให้ผลการคำนวณช่วงเวลาถูกต้องและมีประสิทธิภาพ

ถ้าวันเริ่มต้นหรือวันสิ้นสุดไม่มีข้อมูลจะเป็นไงบ้าง?

DATESBETWEEN ยังคงรวมวันเหล่านั้นในตารางผลลัพธ์ แม้ว่าอาจไม่มีข้อมูลการขาย หากต้องการรวมเฉพาะวันที่มีข้อมูล อาจต้องใช้ FILTER ร่วมกับ DATESBETWEEN

DATESBETWEEN ต่างจาก DATESINPERIOD ยังไง?

DATESBETWEEN ใช้กับช่วงวันที่ที่กำหนดตายตัว (Fixed) เช่น 1-30 พ.ย. ส่วน DATESINPERIOD เหมาะกับช่วง Relative หรือ Offset เช่น ย้อนหลัง 3 เดือนจากวันปัจจุบัน

Resources & Related

Related functions

Additional Notes

DATESBETWEEN ใช้สร้าง ‘ตารางของวันที่’ ในช่วงที่กำหนด โดยระบุวันเริ่มต้น (StartDate) และวันสิ้นสุด (EndDate) แล้วคืนวันที่ทั้งหมดที่อยู่ในช่วงนั้น (รวมวันเริ่มและวันจบ)

สิ่งที่เจ๋งของ DATESBETWEEN คือมันช่วยให้เราสร้างตัวกรองเวลาแบบยืดหยุ่น ไม่ต้องพึ่งพาช่วง Fixed Time Intelligence ที่มีอยู่แล้ว ใช้งานได้กับช่วงแคมเปญ, ช่วงสะสมตั้งแต่วันเริ่มโครงการ, หรือช่วงการวิเคราะห์แบบ Custom ได้

ส่วนตัวผม ถ้าต้องทำ Life-to-Date (ยอดสะสมตั้งแต่แรกจนถึงปัจจุบัน) มักใช้ DATESBETWEEN กับ BLANK() และ TODAY() จึงสะดวกและอ่านเข้าใจง่ายมาก 😎

Leave a Reply

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