คลังสูตรExcel 80 · DAX 95 · M 15
ในหน้านี้
หน้าแรก › DAX › ตัวกรอง (Filter) › CALCULATE

CALCULATE

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

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

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

CALCULATE คืออะไร

คำนวณสูตรภายใต้ตัวกรองที่เพิ่ม เปลี่ยน หรือเอาออกจากตัวกรองของรายงาน เป็นฟังก์ชันที่ใช้มากที่สุดใน DAX

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

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

รูปแบบสูตร

=CALCULATE(<expression>[, <filter1> [, <filter2> [, …]]])

Argument แต่ละตัว

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

Argumentจำเป็นไหมความหมาย
expressionจำเป็นสูตรหรือ Measure ที่จะคำนวณ
filter1, filter2, …จำเป็นเงื่อนไขบนคอลัมน์ เช่น 'ยอดขาย'[ช่องทาง] = "Online" ตารางจาก FILTER หรือ ALL / REMOVEFILTERS เพื่อเอาตัวกรองออก

ลองเลย: ยอดขาย Online และสัดส่วนต่อยอดขาย แยกตามภูมิภาค

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

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

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

EXCEL=SUMIFS(ยอดขาย[ยอดสุทธิ], ยอดขาย[ภูมิภาค], "กลาง", ยอดขาย[ช่องทาง], "Online")

SUMIFS ใส่ทุกเงื่อนไขเองในสูตร CALCULATE เพิ่มเฉพาะเงื่อนไขที่ต่างจากรายงาน

DAXยอด Online = CALCULATE([ยอดขาย], 'ยอดขาย'[ช่องทาง] = "Online")

ตัวกรองบนคอลัมน์เดียวกับ Slicer จะแทนที่ค่าที่เลือกใน Slicer

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

เลือกช่องทาง Modern Trade ใน Slicer แล้วดูคอลัมน์ยอด Online: ตัวเลขไม่เปลี่ยน เพราะเงื่อนไขใน CALCULATE แทนที่ตัวกรองช่องทางจาก Slicer ถ้าต้องการให้ตัดกันใช้ KEEPFILTERS
เงื่อนไขแบบ 'ตาราง'[คอลัมน์] = ค่า ใช้ได้หลายคอลัมน์ถ้ามาจากตารางเดียวกัน แต่อ้าง Measure ไม่ได้ ถ้าต้องใช้ Measure ในเงื่อนไขใช้ FILTER
CALCULATE ที่เรียกในแต่ละแถวของ SUMX หรือ Calculated Column จะเปลี่ยนแถวนั้นเป็นตัวกรอง (context transition) เป็นสาเหตุที่ผลต่างจากที่คาดบ่อยที่สุด

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

1. Slicer ช่องทาง = Modern Trade แต่ Measure CALCULATE([ยอดขาย], 'ยอดขาย'[ช่องทาง] = "Online") ได้อะไร

2. ใน Excel ฟังก์ชันใดใกล้กับ CALCULATE([ยอดขาย], เงื่อนไข) ที่สุด

3. ต้องการเงื่อนไข จำนวน × ราคาต่อหน่วย ≥ 20,000 ใน CALCULATE เขียนแบบใด

ไฟล์ฝึก CALCULATE

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

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

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

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

ไปต่อ

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

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

ดูหลักสูตร