คลังสูตรExcel 80 · DAX 95 · M 15
ในหน้านี้
หน้าแรก › DAX › ความสัมพันธ์ › CROSSFILTER

CROSSFILTER

DAX · Power BIความสัมพันธ์ระดับกลางแบบ 5 · มีเฉพาะใน DAX

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

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

CROSSFILTER คืออะไร

กำหนดทิศทางการกรองของความสัมพันธ์เฉพาะใน CALCULATE เช่น ให้ยอดขายกรองกลับไปที่ตารางสินค้า เพื่อนับสินค้าที่ขายได้

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

  • นับสินค้าหรือลูกค้าที่มียอดตามตัวกรองของรายงาน
  • ปิดความสัมพันธ์ชั่วคราวใน Measure เดียว

รูปแบบสูตร

=CROSSFILTER(<columnName1>, <columnName2>, <direction>)

Argument แต่ละตัว

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

Argumentจำเป็นไหมความหมาย
columnName1จำเป็นคอลัมน์ฝั่งหลาย เช่น 'ยอดขาย'[รหัสสินค้า]
columnName2จำเป็นคอลัมน์ฝั่งหนึ่ง เช่น 'สินค้า'[รหัสสินค้า]
directionจำเป็นNone (ปิด), OneWay (ฝั่งหนึ่งกรองฝั่งหลาย), Both (กรองทั้งสองทาง) และ OneWay_LeftFiltersRight / OneWay_RightFiltersLeft

ลองเลย: จำนวนสินค้าที่ขายได้ในแต่ละภาค

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

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

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

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

Excel นับรหัสสินค้าที่ไม่ซ้ำในแถวที่ตรงเงื่อนไข

DAXสินค้าที่ขายได้ = CALCULATE(COUNTROWS('สินค้า'), CROSSFILTER('ยอดขาย'[รหัสสินค้า], 'สินค้า'[รหัสสินค้า], BOTH))

ตัวกรองภาคไหลจากพนักงาน → ยอดขาย → สินค้า

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

COUNTROWS('สินค้า') ได้ 10 ทุกแถว เพราะความสัมพันธ์ทิศทางเดียว ตัวกรองภาคไม่ไหลจากยอดขายกลับไปที่สินค้า
ตั้งความสัมพันธ์เป็น Both ในโมเดลตลอดเวลาทำให้ตัวกรองไหลหลายทางจนผลคาดเดายาก ใช้ CROSSFILTER เฉพาะ Measure ที่ต้องการ
ผลเท่ากับ DISTINCTCOUNT('ยอดขาย'[รหัสสินค้า]) ในกรณีนี้ แต่ CROSSFILTER ใช้กับ Measure ใดของตารางสินค้าก็ได้

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

1. COUNTROWS('สินค้า') ในแถวภาคกลางได้ 10 เพราะอะไร

2. CROSSFILTER(…, BOTH) ทำอะไร

3. ต้องการปิดความสัมพันธ์ชั่วคราว ใส่ direction ใด

ไฟล์ฝึก CROSSFILTER

9Expert-DAX-CROSSFILTER-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 วัน)

ดูหลักสูตร