IFERROR
อัปเดต 2 ต.ค. 2569 · ตัวเลขในตัวอย่างตรงกับตัวคำนวณอ้างอิงที่เขียนแยก และสูตร Excel ที่คำนวณจากข้อมูลชุดเดียวกัน · ยังไม่ได้ตรวจใน Power BI Desktop
เอกสารอ้างอิง: IFERROR (Microsoft Learn) · syntax และหมายเหตุในหน้านี้ตรวจกับหน้านี้ของ Microsoft · ตัวจำลองในหน้านี้รองรับเฉพาะรูปแบบที่ใช้ในตัวอย่าง (เช่น ไม่รองรับ calendar-based time intelligence)
IFERROR คืออะไร
คืนค่าสำรองเมื่อนิพจน์เกิด Error มีใน DAX แต่ Microsoft แนะนำให้ป้องกัน Error ด้วยวิธีอื่น เช่น DIVIDE หรือ alternateResult
ใช้เมื่อไหร่
- แทนค่า Error ด้วยข้อความหรือค่าสำรอง
- ย้ายสูตรจาก Excel ที่ใช้ IFERROR (แต่ควรเปลี่ยนเป็นวิธีที่ดีกว่า)
รูปแบบสูตร
Argument แต่ละตัว
ชี้ที่ argument ในรูปแบบสูตรด้านบนเพื่อไฮไลต์แถวนั้น
| Argument | จำเป็นไหม | ความหมาย |
|---|---|---|
| value | จำเป็น | นิพจน์ที่อาจเกิด Error |
| value_if_error | จำเป็น | ค่าที่ใช้แทนเมื่อเกิด Error ต้องเป็นชนิดข้อมูลเดียวกับ value |
ลองเลย: ชื่อพนักงานของภาค: IFERROR เทียบกับ alternateResult
คลิกตัวเลขในตารางเพื่อดูตัวกรองไหลผ่านโมเดลจนเป็นตัวเลขนั้น เลือกค่าใน Slicer แก้ Measure ได้ หรือกด Excel เพื่อดูสูตร Excel ที่ได้คำตอบเดียวกัน
- พนักงานขาย[ภูมิภาค] = "กลาง"
- สินค้าไม่มีตัวกรอง
- วันที่ไม่มีตัวกรอง
- ยอดขายเหลือ 181 จาก 495 แถว · หนึ่งจุดคือหนึ่งคำสั่งซื้อ
| ภูมิภาค | พนักงานในภาค (IFERROR) | พนักงานในภาค (alternateResult) |
|---|---|---|
| กลาง | ||
| เหนือ | ||
| ตะวันออกเฉียงเหนือ | ||
| ตะวันออก | ||
| ใต้ | ||
| ยอดรวม |
ถ้าคุณเขียน Excel อยู่แล้ว
=IFERROR(XLOOKUP(A2, ภาค, พนักงาน), "มีหลายคน")ชื่อเดียวกันและใช้เหมือนกัน แต่ DAX มีวิธีที่ดีกว่า
พนักงานในภาค = IFERROR(LOOKUPVALUE('พนักงานขาย'[ชื่อพนักงาน], 'พนักงานขาย'[ภูมิภาค], SELECTEDVALUE('พนักงานขาย'[ภูมิภาค])), "มีหลายคน")LOOKUPVALUE เป็น Error เมื่อภาคมีพนักงานหลายคน
ข้อผิดพลาดและเคล็ดลับ
แบบทดสอบ 3 ข้อ
1. Microsoft แนะนำให้ใช้ IFERROR ใน Measure หรือไม่
อาจทำให้คำนวณช้าลง
2. LOOKUPVALUE พบหลายแถวที่ค่าต่างกัน ควรเขียนอย่างไรแทน IFERROR
alternateResult ใช้ทั้งกรณีไม่พบและพบหลายค่า
3. value_if_error ต้องเป็นอย่างไร
Microsoft Learn ระบุว่าต้องเป็นชนิดเดียวกัน
ไฟล์ฝึก IFERROR
9Expert-DAX-IFERROR-Practice-v1.0.xlsx
โจทย์ในชีตแบบฝึกหัด
- ข้อ 1[พนักงานในภาค (IFERROR)] ชื่อพนักงานของภาค หรือ มีหลายคน · กรอง ภูมิภาค = ใต้
- ข้อ 2[พนักงานในภาค (IFERROR)] ชื่อพนักงานของภาค หรือ มีหลายคน · กรอง ภูมิภาค = เหนือ
- ข้อ 3[พนักงานในภาค (alternateResult)] ชื่อพนักงานของภาคด้วย alternateResult ของ LOOKUPVALUE · กรอง ภูมิภาค = ตะวันออกเฉียงเหนือ
- ข้อ 4[พนักงานในภาค (alternateResult)] ชื่อพนักงานของภาคด้วย alternateResult ของ LOOKUPVALUE · กรอง ภูมิภาค = ตะวันออก
- ข้อ 5[พนักงานในภาค (alternateResult)] ชื่อพนักงานของภาคด้วย alternateResult ของ LOOKUPVALUE · กรอง ไม่กรอง
ไปต่อ
ต่อยอดใน Data Analysis Expression (DAX) for Power BI: Measures, X Aggregation, CALCULATE, Date Table และ Time Intelligence (2 วัน)