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

CROSSJOIN

DAX · Power BIฟังก์ชันตาราง (Table)ระดับกลางแบบ 6 · ไม่มีใน Excel ใช้วิธีอื่นแทน

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

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

CROSSJOIN คืออะไร

จับคู่ทุกแถวของตารางหนึ่งกับทุกแถวของอีกตาราง (Cartesian product) ใช้สร้างทุกคู่ที่เป็นไปได้ แล้วหาคู่ที่ยังไม่มียอด

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

  • สร้างทุกคู่ของสองมิติ แล้วหาคู่ที่ยังไม่มียอด
  • เตรียมตารางคู่ค่าสำหรับวิเคราะห์ช่องว่างของยอดขาย

รูปแบบสูตร

=CROSSJOIN(<table>, <table>[, <table>]…)

Argument แต่ละตัว

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

Argumentจำเป็นไหมความหมาย
tableจำเป็นตารางที่จะจับคู่ ชื่อคอลัมน์ของทุกตารางต้องต่างกัน

ลองเลย: คู่หมวดสินค้า × ช่องทางที่ยังไม่มียอด แยกตามภูมิภาค

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

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

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

EXCEL=ROWS(UNIQUE(สินค้า[หมวดสินค้า]))*ROWS(UNIQUE(ยอดขาย[ช่องทาง]))

Excel ไม่มีฟังก์ชันจับคู่โดยตรง ต้องคำนวณจำนวนคู่หรือสร้างตารางเอง

DAXคู่ที่ยังไม่มียอด = COUNTROWS(FILTER(CROSSJOIN(VALUES('สินค้า'[หมวดสินค้า]), VALUES('ยอดขาย'[ช่องทาง])), ISBLANK([ยอดขาย])))

ทุกคู่หมวด × ช่องทาง แล้วเก็บคู่ที่ยอดขายว่าง

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

VALUES('สินค้า'[หมวดสินค้า]) ได้ทุกหมวดเสมอ เพราะตัวกรองภาคและช่องทางไม่ไหลไปตารางสินค้า ส่วนช่องทางได้เฉพาะที่มียอดในภาคนั้น
จำนวนแถวคือผลคูณของจำนวนแถวทุกตาราง ระวังตารางใหญ่ เช่น ลูกค้า × สินค้า อาจได้หลายล้านแถว
ชื่อคอลัมน์ซ้ำกันเป็น Error ถ้าต้องจับคู่คอลัมน์ชื่อเดียวกัน เปลี่ยนชื่อด้วย SELECTCOLUMNS ก่อน

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

1. CROSSJOIN ของตาราง 6 แถวกับ 4 แถวได้กี่แถว

2. ถ้าสองตารางมีชื่อคอลัมน์ซ้ำกัน CROSSJOIN เป็นอย่างไร

3. ทำไม VALUES('สินค้า'[หมวดสินค้า]) ในแถวภาคกลางได้ทุกหมวด

ไฟล์ฝึก CROSSJOIN

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

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

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

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

ไปต่อ

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

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

ดูหลักสูตร