---
title: IFERROR – คืนค่าแทนเมื่อเกิดข้อผิดพลาด
url: https://www.thepexcel.com/functions/dax/logical/iferror-dax/
type: function-explainer
program: DAX
syntax: "IFERROR(<Value>, <ValueIfError>)"
date: 2025-12-13
updated: 2025-12-23
scores:
  popularity: 7
  difficulty: 3
  usefulness: 7
---

# IFERROR – คืนค่าแทนเมื่อเกิดข้อผิดพลาด

> IFERROR ใช้ดักจับข้อผิดพลาดในนิพจน์: ถ้า Value เกิด error จะคืนค่า ValueIfError แทน ถ้าไม่เกิด error

## คำอธิบาย

IFERROR ใช้ดักจับข้อผิดพลาดในนิพจน์: ถ้า Value เกิด error จะคืนค่า ValueIfError แทน ถ้าไม่เกิด error จะคืนค่าของ Value เดิม เหมาะสำหรับการแปลงชนิดข้อมูล การหารที่อาจเป็นศูนย์ หรือ measure ที่ไม่เสถียร

## Syntax

```excel
IFERROR(&lt;Value&gt;, &lt;ValueIfError&gt;)
```

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| Value | Yes | Expression |  | นิพจน์หรือ measure ที่ต้องการเช็ค ถ้าเกิด error จะไปไกล่เกลี่ย |
| ValueIfError | Yes | Expression |  | ค่าที่จะคืนถ้า Value เกิด error จำเป็นต้องเป็นชนิดข้อมูลเดียวกับ Value |

## เคสการใช้งาน

### แปลงข้อความเป็นตัวเลขแบบปลอดภัย

ถ้าข้อมูลแปลงไม่ได้ ให้คืน BLANK/0 แทน error

_เหมาะกับ:_ safe-conversion

### แสดง 0 แทน error ในรายงาน

ลด error ที่ทำให้ visual แสดงผลผิดปกติ

_เหมาะกับ:_ replace-error-with-zero

### ใช้คู่กับ ISERROR เพื่อควบคุมตรรกะเอง

บางครั้งอยากแตกแขนงเงื่อนไขมากกว่าแค่คืนค่าแทน

_เหมาะกับ:_ explicit-error-logic

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: ดักจับข้อผิดพลาดการแปลงข้อความเป็นตัวเลข

```excel
จำนวนปลอดภัย =
IFERROR(
    VALUE(Products[ProductCode]),
    BLANK()
)
```

**ผลลัพธ์:** `ถ้า ProductCode เป็นตัวเลข ได้ค่าตัวเลข ถ้าแปลงไม่ได้ได้ BLANK`

VALUE() อาจเกิด error เมื่อข้อความไม่ใช่ตัวเลข เช่น 'CODE-123' IFERROR ดักจับและคืน BLANK แทน ทำให้ report ไม่ขึ้น error แดง

### 2. ตัวอย่างที่ 2: ใช้กับ DIVIDE - ปลอดภัยกว่า

```excel
อัตราส่วน =
IFERROR(
    DIVIDE(SUM(Sales[Amount]), SUM(Sales[Quantity])),
    0
)
```

**ผลลัพธ์:** `คืนอัตราส่วน ถ้า Quantity เป็น 0 จะได้ 0 แทน error`

แม้ DIVIDE มีการป้องกันหารด้วยศูนย์แล้ว แต่หากต้องการคืน 0 เมื่อ error สามารถใช้ IFERROR ครอบนอกได้

### 3. ตัวอย่างที่ 3: ป้องกัน error ในการค้นหาข้อมูล (LOOKUPVALUE)

```excel
ราคาจากโต๏ =
IFERROR(
    LOOKUPVALUE(Prices[Price], Prices[ProductID], Sales[ProductID]),
    0
)
```

**ผลลัพธ์:** `หากหาข้อมูลไม่เจอ ได้ 0 แทน error`

LOOKUPVALUE อาจเกิด error ถ้าค่าไม่พบหรือมีข้อมูลซ้ำ ป้องกันด้วย IFERROR เพื่อให้ report ทำงานต่อได้

### 4. ตัวอย่างที่ 4: แยกพฤติกรรมข้อมูลด้วย IF + ISERROR

```excel
สถานะคุณภาพ =
IF(
    ISERROR(VALUE(Data[Score])),
    "ข้อมูลไม่สะอาด",
    "ข้อมูลปกติ"
)
```

**ผลลัพธ์:** `คืนข้อความตามสถานะ ถ้าแปลงไม่ได้ได้ 'ข้อมูลไม่สะอาด'`

บางครั้งต้องการรู้ว่า error เกิดจากไหน ใช้ IF + ISERROR ให้สมมุติได้มากกว่า IFERROR เพียงอย่างเดียว

## หมายเหตุเพิ่มเติม

- IFERROR ใช้ได้ทั้ง measure และ calculated column แต่ใช้เพื่อป้องกันเท่าที่จำเป็น

- DIVIDE() นั้น 'smart' กว่า IFERROR สำหรับการหาร เพราะรองรับ alternative value directly

- ใช้ IFERROR กับ VALUE() เมื่อข้อมูลข้อความอาจมีตัวเลขปะปนอื่นๆ

- สำหรับ DirectQuery ไม่สามารถใช้ IFERROR ได้ ต้อง clean data ที่ source เหล่านี้ก่อน

- ถ้า error ขึ้นบ่อย ให้เช็คว่า data profiling ครอบคลุมหรือไม่ ไม่ใช่เพิ่มเติม IFERROR ตลอด

## คำถามที่พบบ่อย

**Q: IFERROR ดักจับ error ทั้งหมดได้หรือ?**

ไม่ทั้งหมด Microsoft Docs บอกว่า IFERROR 'ไม่สามารถดักจับ runtime error ทั้งหมด' ขึ้นอยู่กับ execution plan ของ DAX engine บางข้อผิดพลาดแบบ block mode อาจกลับไป error ได้ ถ้าต้องการการป้องกันที่มั่นคง ให้แก้ที่ต้นเหตุของข้อมูลก่อน

**Q: ควรใช้ IFERROR หรือ DIVIDE?**

สำหรับการหาร: ใช้ DIVIDE ก่อน เพราะออกแบบเพื่อจัดการหารด้วยศูนย์และอ่านง่ายกว่า แต่ IFERROR ใช้ได้กับ error ประเภทอื่น เช่น VALUE() VALUE() หรือ LOOKUPVALUE ที่อาจขึ้น error

**Q: IFERROR เสื่อมมาจากเมื่อไหร่?**

IFERROR มีมาตั้งแต่ DAX 2010 ยังคง active แต่ recommended approach ในปัจจุบันคือ: 1) แก้ข้อมูล 2) ใช้ DIVIDE สำหรับหาร 3) เช็ค logic ก่อนทำ IFERROR

**Q: IFERROR ใช้ได้กับ DirectQuery หรือไม่?**

ไม่ได้ IFERROR ไม่สนับสนุนใน DirectQuery mode สำหรับ calculated columns และ RLS rules ต้องใช้ alternative เช่น structure data ให้สะอาดก่อนนำเข้า Power BI

## แหล่งข้อมูลเพิ่มเติม

- [Microsoft Learn: IFERROR Function (DAX)](https://learn.microsoft.com/en-us/dax/iferror-function-dax) _(official)_
- [DAX Guide: IFERROR](https://dax.guide/iferror/) _(guide)_

---

_Source: [https://www.thepexcel.com/functions/dax/logical/iferror-dax/](https://www.thepexcel.com/functions/dax/logical/iferror-dax/)_
