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

IFERROR

DAX · Power BIตรรกะและตัวแปรระดับกลางแบบ 2 · ชื่อเดียวกัน ทำงานต่างกัน

อัปเดต 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 (แต่ควรเปลี่ยนเป็นวิธีที่ดีกว่า)

รูปแบบสูตร

=IFERROR(value, value_if_error)

Argument แต่ละตัว

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

Argumentจำเป็นไหมความหมาย
valueจำเป็นนิพจน์ที่อาจเกิด Error
value_if_errorจำเป็นค่าที่ใช้แทนเมื่อเกิด Error ต้องเป็นชนิดข้อมูลเดียวกับ value

ลองเลย: ชื่อพนักงานของภาค: IFERROR เทียบกับ alternateResult

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

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

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

EXCEL=IFERROR(XLOOKUP(A2, ภาค, พนักงาน), "มีหลายคน")

ชื่อเดียวกันและใช้เหมือนกัน แต่ DAX มีวิธีที่ดีกว่า

DAXพนักงานในภาค = IFERROR(LOOKUPVALUE('พนักงานขาย'[ชื่อพนักงาน], 'พนักงานขาย'[ภูมิภาค], SELECTEDVALUE('พนักงานขาย'[ภูมิภาค])), "มีหลายคน")

LOOKUPVALUE เป็น Error เมื่อภาคมีพนักงานหลายคน

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

Microsoft Learn แนะนำให้เลี่ยง IFERROR และ ISERROR เพราะอาจทำให้คำนวณช้าลง ใช้ฟังก์ชันที่รับมือ Error ได้เอง เช่น DIVIDE หรือ alternateResult ของ LOOKUPVALUE แทน
แถวยอดรวมต่างกัน: แบบ IFERROR ได้ค่าว่างเพราะ LOOKUPVALUE ไม่พบภาคและไม่ใช่ Error ส่วน alternateResult ใช้ทั้งกรณีไม่พบและพบหลายค่า
value_if_error ต้องเป็นชนิดเดียวกับ value เช่น ถ้า value เป็นข้อความ ค่าสำรองก็ต้องเป็นข้อความ

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

1. Microsoft แนะนำให้ใช้ IFERROR ใน Measure หรือไม่

2. LOOKUPVALUE พบหลายแถวที่ค่าต่างกัน ควรเขียนอย่างไรแทน IFERROR

3. value_if_error ต้องเป็นอย่างไร

ไฟล์ฝึก IFERROR

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

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

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

  1. ข้อ 1[พนักงานในภาค (IFERROR)] ชื่อพนักงานของภาค หรือ มีหลายคน · กรอง ภูมิภาค = ใต้
  2. ข้อ 2[พนักงานในภาค (IFERROR)] ชื่อพนักงานของภาค หรือ มีหลายคน · กรอง ภูมิภาค = เหนือ
  3. ข้อ 3[พนักงานในภาค (alternateResult)] ชื่อพนักงานของภาคด้วย alternateResult ของ LOOKUPVALUE · กรอง ภูมิภาค = ตะวันออกเฉียงเหนือ
  4. ข้อ 4[พนักงานในภาค (alternateResult)] ชื่อพนักงานของภาคด้วย alternateResult ของ LOOKUPVALUE · กรอง ภูมิภาค = ตะวันออก
  5. ข้อ 5[พนักงานในภาค (alternateResult)] ชื่อพนักงานของภาคด้วย alternateResult ของ LOOKUPVALUE · กรอง ไม่กรอง

ไปต่อ

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

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

ดูหลักสูตร