คลังสูตรExcel 80 · DAX 95 · M 15
ในหน้านี้
หน้าแรก › DAX › ตรรกะและตัวแปร › SWITCH

SWITCH

DAX · Power BIตรรกะและตัวแปรระดับกลางแบบ 1 · ใช้ได้เหมือนกัน

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

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

SWITCH คืออะไร

เทียบค่ากับรายการตัวเลือกแล้วคืนผลของตัวที่ตรง ใช้ SWITCH(TRUE(), …) เพื่อตรวจหลายเงื่อนไขตามลำดับแทน IF ซ้อน

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

  • จัดระดับ A B C ตามช่วงยอดขาย
  • แปลงรหัสเป็นคำอธิบาย

รูปแบบสูตร

=SWITCH(<expression>, <value>, <result>[, <value>, <result>]…[, <else>])

Argument แต่ละตัว

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

Argumentจำเป็นไหมความหมาย
expressionจำเป็นค่าที่จะเทียบ ใส่ TRUE() เพื่อให้ตรวจเงื่อนไขทีละคู่
value, resultจำเป็นค่าที่เทียบ และผลเมื่อตรง (เมื่อใช้ TRUE() คือเงื่อนไขกับผล)
[else]ไม่บังคับผลเมื่อไม่ตรงข้อใด ถ้าไม่ใส่ได้ค่าว่าง

ลองเลย: จัดระดับภาคตามยอดขาย

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

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

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

EXCEL=IFS(x>=1000000, "A", x>=500000, "B", TRUE, "C")

Excel มักใช้ IFS กับเงื่อนไขช่วงค่า DAX ไม่มี IFS จึงใช้ SWITCH(TRUE(), …) ซึ่งเขียนแบบเดียวกันใน Excel ก็ได้

DAXระดับภาค = SWITCH(TRUE(), [ยอดขาย] >= 1000000, "A", [ยอดขาย] >= 500000, "B", "C")

ตรวจจากบนลงล่าง เจอเงื่อนไขแรกที่จริงแล้วหยุด

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

เรียงเงื่อนไขจากเข้มไปหลวม ถ้าใส่ >= 500000 ก่อน ภาคที่ขายได้ล้านก็จะได้ B
ค่าสุดท้ายที่ไม่มีคู่คือ else ลืมใส่แล้วภาคที่ไม่เข้าเงื่อนไขใดจะว่าง
SWITCH([ภาค], "กลาง", …) เทียบค่าเท่ากันแบบ Excel ได้ด้วย แต่ถ้า [ภาค] มาจาก Measure ต้องให้ผลเป็นค่าเดียว ใช้ SELECTEDVALUE

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

1. SWITCH(TRUE(), [ยอดขาย] >= 500000, "B", [ยอดขาย] >= 1000000, "A", "C") ภาคที่ขายได้ 1.2 ล้าน ได้อะไร

2. ค่าสุดท้ายของ SWITCH ที่ไม่มีคู่ คืออะไร

3. ใน Excel ฟังก์ชันใดใช้ตรวจเงื่อนไขช่วงค่าหลายชั้นได้ตรงที่สุด

ไฟล์ฝึก SWITCH

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

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

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

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

ไปต่อ

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

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

ดูหลักสูตร