SWITCH
อัปเดต 26 ก.ย. 2569 · ตัวเลขในตัวอย่างตรงกับตัวคำนวณอ้างอิงที่เขียนแยก และสูตร Excel ที่คำนวณจากข้อมูลชุดเดียวกัน · ยังไม่ได้ตรวจใน Power BI Desktop
เอกสารอ้างอิง: SWITCH (Microsoft Learn) · syntax และหมายเหตุในหน้านี้ตรวจกับหน้านี้ของ Microsoft · ตัวจำลองในหน้านี้รองรับเฉพาะรูปแบบที่ใช้ในตัวอย่าง (เช่น ไม่รองรับ calendar-based time intelligence)
SWITCH คืออะไร
เทียบค่ากับรายการตัวเลือกแล้วคืนผลของตัวที่ตรง ใช้ SWITCH(TRUE(), …) เพื่อตรวจหลายเงื่อนไขตามลำดับแทน IF ซ้อน
ใช้เมื่อไหร่
- จัดระดับ A B C ตามช่วงยอดขาย
- แปลงรหัสเป็นคำอธิบาย
รูปแบบสูตร
Argument แต่ละตัว
ชี้ที่ argument ในรูปแบบสูตรด้านบนเพื่อไฮไลต์แถวนั้น
| Argument | จำเป็นไหม | ความหมาย |
|---|---|---|
| expression | จำเป็น | ค่าที่จะเทียบ ใส่ TRUE() เพื่อให้ตรวจเงื่อนไขทีละคู่ |
| value, result | จำเป็น | ค่าที่เทียบ และผลเมื่อตรง (เมื่อใช้ TRUE() คือเงื่อนไขกับผล) |
| [else] | ไม่บังคับ | ผลเมื่อไม่ตรงข้อใด ถ้าไม่ใส่ได้ค่าว่าง |
ลองเลย: จัดระดับภาคตามยอดขาย
คลิกตัวเลขในตารางเพื่อดูตัวกรองไหลผ่านโมเดลจนเป็นตัวเลขนั้น เลือกค่าใน Slicer แก้ Measure ได้ หรือกด Excel เพื่อดูสูตร Excel ที่ได้คำตอบเดียวกัน
- พนักงานขาย[ภูมิภาค] = "กลาง"
- สินค้าไม่มีตัวกรอง
- วันที่[ปี] = 2025
- ยอดขายเหลือ 96 จาก 495 แถว · หนึ่งจุดคือหนึ่งคำสั่งซื้อ
| ภูมิภาค | ยอดขาย | ระดับภาค |
|---|---|---|
| กลาง | ||
| เหนือ | ||
| ตะวันออกเฉียงเหนือ | ||
| ตะวันออก | ||
| ใต้ | ||
| ยอดรวม |
ถ้าคุณเขียน Excel อยู่แล้ว
=IFS(x>=1000000, "A", x>=500000, "B", TRUE, "C")Excel มักใช้ IFS กับเงื่อนไขช่วงค่า DAX ไม่มี IFS จึงใช้ SWITCH(TRUE(), …) ซึ่งเขียนแบบเดียวกันใน Excel ก็ได้
ระดับภาค = SWITCH(TRUE(), [ยอดขาย] >= 1000000, "A", [ยอดขาย] >= 500000, "B", "C")ตรวจจากบนลงล่าง เจอเงื่อนไขแรกที่จริงแล้วหยุด
ข้อผิดพลาดและเคล็ดลับ
แบบทดสอบ 3 ข้อ
1. SWITCH(TRUE(), [ยอดขาย] >= 500000, "B", [ยอดขาย] >= 1000000, "A", "C") ภาคที่ขายได้ 1.2 ล้าน ได้อะไร
SWITCH หยุดที่เงื่อนไขแรกที่จริง จึงต้องเรียงจากเข้มไปหลวม
2. ค่าสุดท้ายของ SWITCH ที่ไม่มีคู่ คืออะไร
ถ้าไม่ใส่ else แถวที่ไม่ตรงข้อใดจะได้ค่าว่าง
3. ใน Excel ฟังก์ชันใดใช้ตรวจเงื่อนไขช่วงค่าหลายชั้นได้ตรงที่สุด
IFS ตรวจเงื่อนไขตามลำดับเหมือน SWITCH(TRUE(), …)
ไฟล์ฝึก SWITCH
9Expert-DAX-SWITCH-Practice-v1.0.xlsx
โจทย์ในชีตแบบฝึกหัด
- ข้อ 1[ระดับภาค] ระดับ A (ตั้งแต่ 1,000,000) B (ตั้งแต่ 500,000) หรือ C · กรอง ภูมิภาค = ใต้, ปี = 2024
- ข้อ 2[ระดับภาค] ระดับ A (ตั้งแต่ 1,000,000) B (ตั้งแต่ 500,000) หรือ C · กรอง ภูมิภาค = ตะวันออกเฉียงเหนือ, ช่องทาง = Online, ปี = 2025
- ข้อ 3[ยอดขาย] ยอดขายสุทธิ (จำนวน × ราคาต่อหน่วย × (1 − ส่วนลด)) · กรอง ภูมิภาค = เหนือ, ปี = 2025
- ข้อ 4[ยอดขาย] ยอดขายสุทธิ (จำนวน × ราคาต่อหน่วย × (1 − ส่วนลด)) · กรอง ภูมิภาค = ตะวันออก, ช่องทาง = Modern Trade, ปี = 2024
- ข้อ 5[ยอดขาย] ยอดขายสุทธิ (จำนวน × ราคาต่อหน่วย × (1 − ส่วนลด)) · กรอง ปี = 2025
ไปต่อ
ต่อยอดใน Data Analysis Expression (DAX) for Power BI: Measures, X Aggregation, CALCULATE, Date Table และ Time Intelligence (2 วัน)