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

UNION

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

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

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

UNION คืออะไร

ต่อแถวของสองตารางขึ้นไปเป็นตารางเดียว เทียบคอลัมน์ตามลำดับ เก็บแถวซ้ำไว้ ใช้รวมรายชื่อจากสองช่วงเวลา

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

  • รวมรายชื่อลูกค้าจากสองช่วงเวลา
  • ต่อตารางชั่วคราวที่มีโครงสร้างเดียวกัน

รูปแบบสูตร

=UNION(<tableExpression1>, <tableExpression2> [,<tableExpression>]…)

Argument แต่ละตัว

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

Argumentจำเป็นไหมความหมาย
tableExpression1จำเป็นตารางแรก ชื่อคอลัมน์ของผลลัพธ์มาจากตารางนี้
tableExpression2, …จำเป็นตารางที่ต่อท้าย ต้องมีจำนวนคอลัมน์เท่ากัน

ลองเลย: รายชื่อลูกค้าปี 2024 ต่อกับปี 2025 แยกตามภูมิภาค

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

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

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

EXCEL=ROWS(UNIQUE(VSTACK(ลูกค้าปี2024, ลูกค้าปี2025)))

Excel ใช้ VSTACK ต่อช่วงข้อมูล

DAXลูกค้าไม่ซ้ำสองปี = COUNTROWS(DISTINCT(UNION(CALCULATETABLE(VALUES('ยอดขาย'[รหัสลูกค้า]), 'วันที่'[ปี] = 2024), CALCULATETABLE(VALUES('ยอดขาย'[รหัสลูกค้า]), 'วันที่'[ปี] = 2025))))

UNION เก็บแถวซ้ำ ครอบ DISTINCT เพื่อนับลูกค้าแต่ละรายครั้งเดียว

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

ลูกค้าสองปี (นับซ้ำ) − ลูกค้าไม่ซ้ำสองปี = ลูกค้าที่ซื้อทั้งสองปี ตรงกับตัวอย่างในหน้า INTERSECT
เทียบคอลัมน์ตามลำดับ ไม่ได้ดูชื่อ และชื่อคอลัมน์ของผลลัพธ์มาจากตารางแรก
DISTINCT(<ตาราง>) ตัดแถวซ้ำของทั้งตาราง ส่วน DISTINCT(<คอลัมน์>) ได้ค่าไม่ซ้ำของคอลัมน์ในโมเดล

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

1. UNION เก็บแถวซ้ำหรือไม่

2. ชื่อคอลัมน์ของผลลัพธ์ UNION มาจากไหน

3. ลูกค้าปี 2024 มี 40 ราย ปี 2025 มี 45 ราย ซื้อทั้งสองปี 30 ราย COUNTROWS(DISTINCT(UNION(…))) ได้เท่าใด

ไฟล์ฝึก UNION

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

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

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

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

ไปต่อ

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

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

ดูหลักสูตร