คลังสูตรExcel 80 · DAX 95 · M 15
ในหน้านี้
หน้าแรก › DAX › วันที่ (Date) › CALENDAR

CALENDAR

DAX · Power BIวันที่ (Date)ระดับกลางแบบ 3 · แนวคิดเดียวกัน คนละฟังก์ชัน

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

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

CALENDAR คืออะไร

สร้างตารางวันที่หนึ่งคอลัมน์ชื่อ Date ตั้งแต่วันเริ่มถึงวันสิ้นสุด ครบทุกวัน ใช้สร้างตาราง Date ของโมเดล

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

  • สร้างตาราง Date ของโมเดลให้มีวันที่ครบทุกวัน
  • นับจำนวนวันในช่วง เช่น วันที่ไม่มีคำสั่งซื้อ

รูปแบบสูตร

=CALENDAR(<start_date>, <end_date>)

Argument แต่ละตัว

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

Argumentจำเป็นไหมความหมาย
start_dateจำเป็นวันแรกของตาราง ใส่ DATE หรือนิพจน์ที่ให้วันที่ เช่น MIN('ยอดขาย'[วันที่])
end_dateจำเป็นวันสุดท้ายของตาราง (รวมวันนี้ด้วย) ต้องไม่อยู่ก่อน start_date

ลองเลย: จำนวนวันในช่วงขาย และวันที่ไม่มีคำสั่งซื้อ แยกตามภูมิภาค

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

[วันที่มีคำสั่งซื้อ] = DISTINCTCOUNT('ยอดขาย'[วันที่])
[วันที่ไม่มีคำสั่งซื้อ] = [วันในช่วงขาย] - [วันที่มีคำสั่งซื้อ]
Ctrl + Enter คำนวณ · พิมพ์ ' เลือกตาราง · [ เลือกคอลัมน์หรือ Measure
  • พนักงานขาย[ภูมิภาค] = "กลาง"
  • สินค้าไม่มีตัวกรอง
  • วันที่[ปี] = 2025
  • ยอดขายเหลือ 96 จาก 495 แถว · หนึ่งจุดคือหนึ่งคำสั่งซื้อ
จำนวนวันในช่วงขาย และวันที่ไม่มีคำสั่งซื้อ แยกตามภูมิภาค
จำนวนวันในช่วงขาย และวันที่ไม่มีคำสั่งซื้อ แยกตามภูมิภาค · ใช้ลูกศรเลื่อนระหว่างช่อง Enter เพื่อดูว่าตัวเลขนั้นคำนวณอย่างไร
ภูมิภาควันในช่วงขายวันที่มีคำสั่งซื้อวันที่ไม่มีคำสั่งซื้อ
กลาง
เหนือ
ตะวันออกเฉียงเหนือ
ตะวันออก
ใต้
ยอดรวม
351วันในช่วงขาย · กลาง · 2025
ดูทีละขั้นขั้น 6 / 6

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

EXCEL=SEQUENCE(DATE(2025,12,31)-DATE(2025,1,1)+1, 1, DATE(2025,1,1))

Excel 365 ใช้ SEQUENCE สร้างวันที่ลงชีต DAX ใช้ CALENDAR สร้างเป็นตารางในโมเดล

DAXวันที่ = CALENDAR(DATE(2024, 1, 1), DATE(2025, 12, 31))

สร้างเป็นตารางใหม่: Modeling › New table แล้วเพิ่มคอลัมน์ ปี = YEAR([Date])

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

ตาราง Date ที่ดีต้องมีวันที่ครบทุกวันตั้งแต่ต้นปีแรกถึงสิ้นปีสุดท้าย CALENDAR(DATE(2024, 1, 1), DATE(2025, 12, 31)) ให้ตารางแบบนั้นพอดี
สร้างตารางแล้วต้องตั้ง Mark as date table และเชื่อม 'วันที่'[Date] กับคอลัมน์วันที่ของตารางยอดขาย ฟังก์ชันเทียบช่วงเวลา เช่น TOTALYTD จึงทำงานถูกต้อง
CALENDARAUTO() หาช่วงจากคอลัมน์วันที่ทุกคอลัมน์ในโมเดลให้เอง สะดวกแต่ช่วงอาจยาวเกินจริงถ้ามีคอลัมน์วันเกิดหรือวันที่ผิดปกติ

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

1. CALENDAR(DATE(2025, 1, 1), DATE(2025, 1, 31)) ได้ตารางกี่แถว

2. หลังสร้างตาราง Date ด้วย CALENDAR ควรทำอะไรต่อ

3. CALENDAR ให้ผลเป็นอะไร

ไฟล์ฝึก CALENDAR

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

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

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

  1. ข้อ 1[วันในช่วงขาย] จำนวนวันตั้งแต่คำสั่งซื้อแรกถึงคำสั่งซื้อล่าสุด (นับทั้งสองวัน) · กรอง ภูมิภาค = ใต้, ปี = 2024
  2. ข้อ 2[วันในช่วงขาย] จำนวนวันตั้งแต่คำสั่งซื้อแรกถึงคำสั่งซื้อล่าสุด (นับทั้งสองวัน) · กรอง ภูมิภาค = ตะวันออกเฉียงเหนือ, ช่องทาง = Online, ปี = 2025
  3. ข้อ 3[วันที่มีคำสั่งซื้อ] จำนวนวันที่มีคำสั่งซื้ออย่างน้อยหนึ่งรายการ · กรอง ภูมิภาค = เหนือ, ปี = 2025
  4. ข้อ 4[วันที่ไม่มีคำสั่งซื้อ] จำนวนวันในช่วงขายที่ไม่มีคำสั่งซื้อเลย · กรอง ภูมิภาค = ตะวันออก, ช่องทาง = Modern Trade, ปี = 2024
  5. ข้อ 5[วันที่มีคำสั่งซื้อ] จำนวนวันที่มีคำสั่งซื้ออย่างน้อยหนึ่งรายการ · กรอง ปี = 2025

ไปต่อ

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

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

ดูหลักสูตร