Thep Excel

DATESINPERIOD – คืนค่าช่วงวันที่เคลื่อนที่ (Moving Calculation)

คืนค่าช่วงวันที่แบบเคลื่อนที่ (ใช้ทำ Moving Average)

DATESINPERIOD คืนค่าตารางวันที่ในช่วงเวลาที่กำหนด โดยเริ่มจาก StartDate และขยายไปตาม NumberOfIntervals (ไปข้างหน้าหรือย้อนหลัง) นิยมใช้ทำ Moving Average หรือ Rolling Sum

=DATESINPERIOD(Dates, StartDate, NumberOfIntervals, Interval)

By ThepExcel AI Agent
1 December 2025

Syntax & Arguments

=DATESINPERIOD(Dates, StartDate, NumberOfIntervals, Interval)

Argument Type Required Default Description
Dates column Yes คอลัมน์วันที่จาก Date Table
StartDate date/datetime Yes วันที่เริ่มต้น (มักใช้ MAX(‘Date'[Date]) หรือ LASTDATE(…) เพื่อเริ่มจากวันล่าสุดที่เลือก)
NumberOfIntervals integer Yes จำนวนหน่วยที่ต้องการขยาย (ติดลบ = ย้อนหลัง)
Interval enum Yes หน่วยเวลา: DAY, MONTH, QUARTER, YEAR

How it works

Moving Average 3 Months

หาค่าเฉลี่ยยอดขายย้อนหลัง 3 เดือน เพื่อดูแนวโน้ม (Trend) ที่ลดความผันผวนระยะสั้นลง

Rolling 12 Months Total

ยอดขายรวมย้อนหลัง 12 เดือน (Annual Run Rate)

Examples

ตัวอย่างที่ 1: ยอดขายย้อนหลัง 3 เดือน (Rolling 3 Months)

เริ่มจากวันสุดท้ายที่เลือก (MAX Date) แล้วนับถอยหลังไป 3 เดือน นำช่วงเวลานั้นไปคำนวณยอดขายรวม
DAX Formula:

Rolling 3M Sales = 
CALCULATE( 
    [Total Sales], 
    DATESINPERIOD( 'Date'[Date], MAX('Date'[Date]), -3, MONTH ) 
)

Result:

ผลรวมยอดขายของเดือนปัจจุบัน + 2 เดือนก่อนหน้า

ตัวอย่างที่ 2: ค่าเฉลี่ยเคลื่อนที่ 30 วัน (Moving Avg 30 Days)

ใช้ DATESINPERIOD สร้าง Scope 30 วัน แล้วใช้ AVERAGEX หาค่าเฉลี่ยใน Scope นั้น
DAX Formula:

MovAvg 30D = 
CALCULATE( 
    AVERAGEX( VALUES('Date'[Date]), [Daily Sales] ), 
    DATESINPERIOD( 'Date'[Date], MAX('Date'[Date]), -30, DAY ) 
)

Result:

ค่าเฉลี่ยยอดขายต่อวัน ในช่วง 30 วันล่าสุด

ตัวอย่างที่ 3: ยอดขาย 1 ปีที่ผ่านมา (นับจากวันนี้)

ใช้ TODAY() เป็นจุดเริ่มต้น แล้วถอยหลังไป 1 ปี
DAX Formula:

=Last Year Sales (from Today) = 
CALCULATE( 
    [Total Sales], 
    DATESINPERIOD( 'Date'[Date], TODAY(), -1, YEAR ) 
)

Result:

ยอดขาย 365 วันที่แล้ว

FAQs

DATESINPERIOD ต่างจาก DATESBETWEEN ไหม?

DATESINPERIOD กำหนดด้วย “จุดเริ่ม + ระยะเวลา” (เช่น เริ่มวันนี้ ถอยไป 3 เดือน) ส่วน DATESBETWEEN กำหนดด้วย “จุดเริ่ม + จุดจบ” (เช่น 1 ม.ค. ถึง 31 มี.ค.)

Resources & Related

Additional Notes

DATESINPERIOD เป็นฟังก์ชันยอดนิยมสำหรับการคำนวณแบบ Moving Average (ค่าเฉลี่ยเคลื่อนที่) หรือ Rolling Total โดยมันจะคืนค่าตารางวันที่ในช่วงที่กำหนด เริ่มต้นจากวัน StartDate และขยับไปข้างหน้าหรือย้อนหลังเป็นจำนวน N หน่วย

เช่น “ย้อนหลัง 3 เดือนจากวันนี้” หรือ “14 วันข้างหน้าจากวันนี้”

Leave a Reply

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