คลังสูตรExcel 80 · DAX 95 · M 15
ในหน้านี้
หน้าแรก › DAX › ฟังก์ชันตาราง (Table) › CALCULATETABLE

CALCULATETABLE

DAX · Power BIฟังก์ชันตาราง (Table)ระดับกลางแบบ 5 · มีเฉพาะใน DAX

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

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

CALCULATETABLE คืออะไร

คืนตารางที่คำนวณในตัวกรองที่เปลี่ยนแล้ว ทำงานเหมือน CALCULATE แต่ได้ตาราง ใช้สร้างรายการที่ต้องการ เช่น ลูกค้าที่เคยซื้อ Online

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

  • สร้างตารางที่เปลี่ยนตัวกรอง เช่น ลูกค้าที่ซื้อทาง Online เพื่อใช้ต่อในสูตร
  • เตรียมตารางให้ INTERSECT, EXCEPT หรือ COUNTROWS

รูปแบบสูตร

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

Argument แต่ละตัว

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

Argumentจำเป็นไหมความหมาย
expressionจำเป็นตาราง หรือฟังก์ชันที่ให้ตาราง เช่น VALUES('ยอดขาย'[รหัสลูกค้า])
filter1, filter2, …จำเป็นตัวกรองแบบเดียวกับ CALCULATE

ลองเลย: ลูกค้าที่ซื้อ Online แยกตามภูมิภาค

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

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

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

EXCEL=ROWS(UNIQUE(FILTER(ยอดขาย[รหัสลูกค้า], (ยอดขาย[ภูมิภาค]="กลาง")*(ยอดขาย[ช่องทาง]="Online"))))

Excel ใส่ทุกเงื่อนไขใน FILTER เอง

DAXลูกค้าที่ซื้อ Online = COUNTROWS(CALCULATETABLE(VALUES('ยอดขาย'[รหัสลูกค้า]), 'ยอดขาย'[ช่องทาง] = "Online"))

เงื่อนไขช่องทางแทนที่ตัวกรองช่องทางจาก Slicer

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

เลือก Slicer ช่องทาง Modern Trade แล้วลูกค้าที่ซื้อ Online ยังแสดงค่าเดิม เพราะเงื่อนไขใน CALCULATETABLE แทนที่ตัวกรองช่องทาง
RELATEDTABLE คือ CALCULATETABLE ที่ไม่มีเงื่อนไข ใช้ในแถวของตารางฝั่งหนึ่ง
นิยมใช้คู่กับ INTERSECT และ EXCEPT เพื่อเทียบรายชื่อลูกค้าระหว่างสองช่วงเวลา

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

1. CALCULATETABLE ต่างจาก CALCULATE อย่างไร

2. ตัวกรอง 'ยอดขาย'[ช่องทาง] = "Online" ใน CALCULATETABLE ทำอะไรกับ Slicer ช่องทาง

3. CALCULATETABLE ต่างจาก FILTER อย่างไร

ไฟล์ฝึก CALCULATETABLE

9Expert-DAX-CALCULATETABLE-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[ลูกค้าที่ซื้อ Online] จำนวนลูกค้าที่ซื้อผ่านช่องทาง Online · กรอง ภูมิภาค = เหนือ, ปี = 2025
  4. ข้อ 4[ลูกค้าที่ซื้อ Online] จำนวนลูกค้าที่ซื้อผ่านช่องทาง Online · กรอง ภูมิภาค = ตะวันออก, ช่องทาง = Modern Trade, ปี = 2024
  5. ข้อ 5[ลูกค้าที่ซื้อ Online] จำนวนลูกค้าที่ซื้อผ่านช่องทาง Online · กรอง ปี = 2025

ไปต่อ

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

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

ดูหลักสูตร