คลังสูตรExcel 80 · DAX 95 · M 15
ในหน้านี้
หน้าแรก › DAX › เทียบช่วงเวลา (Time Intelligence) › DATESINPERIOD

DATESINPERIOD

DAX · Power BIเทียบช่วงเวลา (Time Intelligence)ระดับกลางแบบ 5 · มีเฉพาะใน DAX

อัปเดต 27 ก.ย. 2569 · ตัวเลขในตัวอย่างตรงกับตัวคำนวณอ้างอิงที่เขียนแยก และสูตร Excel ที่คำนวณจากข้อมูลชุดเดียวกัน · ยังไม่ได้ตรวจใน Power BI Desktop

เอกสารอ้างอิง: DATESINPERIOD (Microsoft Learn) · syntax และหมายเหตุในหน้านี้ตรวจกับหน้านี้ของ Microsoft · ตัวจำลองในหน้านี้รองรับเฉพาะรูปแบบที่ใช้ในตัวอย่าง (เช่น ไม่รองรับ calendar-based time intelligence)

DATESINPERIOD คืออะไร

คืนตารางวันที่ย้อนหลังหรือไปข้างหน้าจากวันที่กำหนด ตามจำนวนวัน เดือน ไตรมาส หรือปี ใช้ทำยอดย้อนหลัง 3 เดือน (rolling)

ใช้เมื่อไหร่

  • ยอดย้อนหลัง 3 เดือนหรือ 12 เดือน (rolling) ของแต่ละเดือน
  • ค่าเฉลี่ยเคลื่อนที่ (moving average) ที่ลดความผันผวนรายเดือน

รูปแบบสูตร

=DATESINPERIOD(<dates or calendar>, <start_date>, <number_of_intervals>, <interval>[, <endbehavior>])

Argument แต่ละตัว

ชี้ที่ argument ในรูปแบบสูตรด้านบนเพื่อไฮไลต์แถวนั้น

Argumentจำเป็นไหมความหมาย
datesจำเป็นคอลัมน์วันที่ของตาราง Date
start_dateจำเป็นวันที่ตั้งต้น มักใช้ MAX('วันที่'[Date])
number_of_intervalsจำเป็นจำนวนช่วง ติดลบ = ย้อนหลัง
intervalจำเป็นDAY, MONTH, QUARTER หรือ YEAR (คำสงวน)
[endbehavior]ไม่บังคับใช้กับการอ้าง calendar เท่านั้น

ลองเลย: ยอดขาย 3 เดือนย้อนหลัง (rolling) รายเดือน

คลิกตัวเลขในตารางเพื่อดูตัวกรองไหลผ่านโมเดลจนเป็นตัวเลขนั้น เลือกค่าใน Slicer แก้ Measure ได้ หรือกด Excel เพื่อดูสูตร Excel ที่ได้คำตอบเดียวกัน

[ยอดขาย] = SUMX('ยอดขาย', 'ยอดขาย'[จำนวน] * 'ยอดขาย'[ราคาต่อหน่วย] * (1 - 'ยอดขาย'[ส่วนลด]))
[เฉลี่ยต่อเดือน (3 เดือน)] = DIVIDE([ยอด 3 เดือนย้อนหลัง], 3)
Ctrl + Enter คำนวณ · พิมพ์ ' เลือกตาราง · [ เลือกคอลัมน์หรือ Measure
  • พนักงานขายไม่มีตัวกรอง
  • สินค้าไม่มีตัวกรอง
  • วันที่[Date] 1/11/2024 ถึง 31/1/2025
  • ยอดขายเหลือ 59 จาก 495 แถว · หนึ่งจุดคือหนึ่งคำสั่งซื้อ
ยอดขาย 3 เดือนย้อนหลัง (rolling) รายเดือน
ยอดขาย 3 เดือนย้อนหลัง (rolling) รายเดือน · ใช้ลูกศรเลื่อนระหว่างช่อง Enter เพื่อดูว่าตัวเลขนั้นคำนวณอย่างไร
เดือนยอดขายยอด 3 เดือนย้อนหลังเฉลี่ยต่อเดือน (3 เดือน)
ม.ค.
ก.พ.
มี.ค.
เม.ย.
พ.ค.
มิ.ย.
ก.ค.
ส.ค.
ก.ย.
ต.ค.
พ.ย.
ธ.ค.
ยอดรวม
889,456ยอด 3 เดือนย้อนหลัง · ม.ค. · 2025
ดูทีละขั้นขั้น 6 / 6

ถ้าคุณเขียน Excel อยู่แล้ว

EXCEL=SUMIFS(ยอดขาย[ยอดสุทธิ], ยอดขาย[วันที่], ">="&EDATE(DATE(2025,3,31),-3)+1, ยอดขาย[วันที่], "<="&DATE(2025,3,31))

Excel ใช้ EDATE ย้อนหลังจากวันสุดท้ายเอง

DAXยอด 3 เดือนย้อนหลัง = CALCULATE([ยอดขาย], DATESINPERIOD('วันที่'[Date], MAX('วันที่'[Date]), -3, MONTH))

นับรวมวันตั้งต้น ย้อนไปไม่รวมวันที่ครบ 3 เดือนพอดี

ข้อผิดพลาดและเคล็ดลับ

แถว ก.พ. 2025 ได้ช่วง 29 พ.ย. 2024 ถึง 28 ก.พ. 2025 ไม่ใช่ 1 ธ.ค. เพราะนับย้อน 3 เดือนจากวันที่ 28 (ช่วงเป็น (วันที่ย้อน, วันตั้งต้น]) ตามหลักที่เอกสาร Microsoft อธิบาย ควรตรวจกับข้อมูลจริงใน Power BI Desktop
แถว ม.ค. 2024 มีข้อมูลแค่เดือนเดียว เพราะตาราง Date ไม่มีปี 2023 DATESINPERIOD คืนเฉพาะวันที่ที่มีในคอลัมน์
ถ้าต้องการเดือนเต็มเสมอ ใช้ DATESBETWEEN กับ EOMONTH หรือ PARALLELPERIOD

แบบทดสอบ 3 ข้อ

1. DATESINPERIOD('วันที่'[Date], MAX('วันที่'[Date]), -3, MONTH) ในแถว มิ.ย. คือช่วงใด

2. number_of_intervals เป็นค่าลบหมายความว่าอะไร

3. ต้องการค่าเฉลี่ยย้อนหลัง 3 เดือน ควรเขียนอย่างไร

ไฟล์ฝึก DATESINPERIOD

9Expert-DAX-DATESINPERIOD-Practice-v1.0.xlsx

รุ่น 1.0 · 26/9/2026 · 70 KB · ไม่มี Macro · นำเข้า Power BI แล้วทำโจทย์ พิมพ์คำตอบกลับในไฟล์ ตรวจเอง
เริ่มต้นยอดขายสินค้าพนักงานขายวันที่คงคลังเป้าภูมิภาคแบบฝึกหัดเฉลย

โจทย์ในชีตแบบฝึกหัด

  1. ข้อ 1[ยอด 3 เดือนย้อนหลัง] ยอดขาย 3 เดือนล่าสุดนับถึงสิ้นเดือนที่กรอง · กรอง ปี = 2025, เดือน = ก.ค.
  2. ข้อ 2[ยอด 3 เดือนย้อนหลัง] ยอดขาย 3 เดือนล่าสุดนับถึงสิ้นเดือนที่กรอง · กรอง ช่องทาง = Online, ปี = 2025, เดือน = ธ.ค.
  3. ข้อ 3[ยอดขาย] ยอดขายของช่วงที่กรอง · กรอง ปี = 2025, เดือน = พ.ค.
  4. ข้อ 4[เฉลี่ยต่อเดือน (3 เดือน)] ยอดขายเฉลี่ยต่อเดือนของ 3 เดือนล่าสุด · กรอง ช่องทาง = Modern Trade, ปี = 2025, เดือน = ต.ค.
  5. ข้อ 5[ยอดขาย] ยอดขายของช่วงที่กรอง · กรอง ปี = 2025

ไปต่อ

อยากเขียน DAX สำหรับรายงานจริงทั้งระบบ

ต่อยอดใน Data Analysis Expression (DAX) for Power BI: Measures, X Aggregation, CALCULATE, Date Table และ Time Intelligence (2 วัน)

ดูหลักสูตร