ส่งรายงานให้หัวหน้า แต่ตารางเต็มไปด้วย #DIV/0! และ #N/A — ดูไม่น่าเชื่อถือ ทั้งที่ตัวเลขส่วนใหญ่ถูกต้อง
IFERROR เปลี่ยน error เป็นค่าที่เรากำหนด เช่น ขีด หรือข้อความ แต่ถ้าใช้ผิดวิธี มันจะซ่อนความผิดพลาดจริงจนยอดรวมเพี้ยนโดยไม่มีใครรู้ — บทความนี้สอนทั้งสองด้าน
รูปแบบสูตร
=IFERROR(สูตรเดิม, ค่าที่จะแสดงถ้า error) — ถ้าสูตรเดิมคำนวณได้ จะแสดงผลตามปกติ ถ้า error จะแสดงค่าที่ใส่ไว้แทน
| error ที่เจอ | เกิดจาก | ควรแก้ที่ |
|---|---|---|
| #DIV/0! | =B2/C2 | ตัวหารเป็น 0 หรือว่าง — IFERROR ได้ผลดี |
| #N/A | =VLOOKUP(…) | หาค่าไม่เจอ — ใช้ IFNA ดีกว่า (ดูด้านล่าง) |
| #VALUE! | ="abc"*2 | ชนิดข้อมูลผิด — แก้ข้อมูล อย่าซ่อน |
| #REF! | ช่องที่อ้างถูกลบ | แก้สูตร อย่าซ่อน |
| #NAME? | =SUMM(A:A) | พิมพ์ชื่อสูตรผิด — แก้สูตร อย่าซ่อน |
หลักง่าย ๆ: IFERROR ใช้กับ error ที่ "คาดไว้แล้วว่าเกิดได้ตามปกติ" เช่น แถวที่ยังไม่มีข้อมูล หรือรหัสที่ยังไม่อยู่ในตาราง ส่วน error ที่บอกว่าสูตรหรือข้อมูลผิด ต้องแก้ ไม่ใช่ซ่อน
ตัวอย่าง 1: หารด้วยศูนย์

ภาพจากไฟล์ Google Sheets จริง · เปิดไฟล์ตัวอย่างนี้ (ดูอย่างเดียว — ไฟล์ → ทำสำเนา เพื่อลองแก้)
ดูเป็นตาราง (ก๊อปตัวเลขได้)
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | สินค้า | ยอดขาย | ชิ้นที่ขาย | หารตรง ๆ | ใช้ IFERROR |
| 2 | กาแฟ | 900 | 20 | 45 | 45 |
| 3 | ชาไทย | 0 | 0 | #DIV/0! | - |
| 4 | โกโก้ | 500 | #DIV/0! | - |
สูตรในช่องสีฟ้า (ช่วงเช่น C2:C4 = พิมพ์ที่ช่องแรกแล้วลากลง):
- D2:D4
=B2/C2 - E2:E4
=IFERROR(B2/C2,"-")
แถวที่ยังไม่มีการขาย (0 ชิ้น หรือช่องว่าง) จะเป็น #DIV/0! เสมอเพราะคณิตศาสตร์หารด้วยศูนย์ไม่ได้ — แสดง "-" แทนดูสะอาดกว่า และสูตร SUM / AVERAGE ที่อ้างคอลัมน์นี้จะข้ามข้อความ "-" ไปเอง ไม่ error ตาม
ตัวอย่าง 2: กับดักที่ทำให้ยอดรวมผิด

ภาพจากไฟล์ Google Sheets จริง · เปิดไฟล์ตัวอย่างนี้ (ดูอย่างเดียว — ไฟล์ → ทำสำเนา เพื่อลองแก้)
ดูเป็นตาราง (ก๊อปตัวเลขได้)
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | รหัส | จำนวน | ราคา (IFERROR → 0) | ยอด | รหัส | ราคา | |
| 2 | CF01 | 2 | 45 | 90 | CF01 | 45 | |
| 3 | TH02 | 3 | 40 | 120 | TH02 | 40 | |
| 4 | CF1 | 1 | 0 | 0 | |||
| 5 | รวม | 210 |
สูตรในช่องสีฟ้า (ช่วงเช่น C2:C4 = พิมพ์ที่ช่องแรกแล้วลากลง):
- C2:C4
=IFERROR(VLOOKUP(A2,$F$2:$G$3,2,FALSE),0) - D2:D4
=B2*C2 - D5
=SUM(D2:D4)
แถว 4 พิมพ์รหัสผิด (CF1 แทน CF01) สูตรไม่ฟ้องอะไรเลย ยอดรวมออกมา 210 ทั้งที่ควรเป็น 255 — ให้ IFERROR คืนข้อความเตือน เช่น "ไม่พบรหัส" แทน 0 จะเห็นปัญหาทันที
- 1
ปัญหา
รหัส CF1 พิมพ์ผิด VLOOKUP หาไม่เจอ แต่ IFERROR เปลี่ยนเป็น 0 เงียบ ๆ ยอดรวมจึงขาดไป 45 บาท และไม่มีอะไรเตือน - 2
แก้ข้อ 1: คืนข้อความแทน 0
=IFERROR(VLOOKUP(…),"ไม่พบรหัส")ช่องราคาจะขึ้นคำเตือนให้เห็น และยอดของแถวนั้นจะ error ทำให้รู้ว่าต้องแก้ - 3
แก้ข้อ 2: ใช้ IFNA แทน IFERROR
=IFNA(VLOOKUP(…),"ไม่พบรหัส")จับเฉพาะ "หาไม่เจอ" ส่วน error อื่น (สูตรพิมพ์ผิด ช่วงหาย) ยังแสดงให้เห็นเหมือนเดิม
ใช้กับทั้งคอลัมน์
ครอบ ARRAYFORMULA ไว้ข้างนอก ให้ IFERROR ทำงานทุกแถวจากสูตรเดียว: =ARRAYFORMULA(IF(A2:A="","",IFERROR(B2:B/C2:C,"-")))— ดูวิธีเต็มในบทความ ARRAYFORMULA
ข้อผิดพลาดที่เจอบ่อย
ครอบ IFERROR ทุกสูตรไว้ก่อน "กันเหนียว"
ใส่ "" แล้วกราฟหรือค่าเฉลี่ยเพี้ยน
ตัวหารว่างเพราะยังไม่กรอก แต่ขึ้น -
อยากได้ใบเสนอราคาที่ดึงราคาเองและเตือนเมื่อรหัสผิด?
คำถามที่ถามบ่อย
IFERROR ใช้ยังไง?
ครอบสูตรเดิมไว้ข้างใน แล้วใส่ค่าที่จะแสดงเมื่อ error เป็นตัวที่สอง เช่น =IFERROR(B2/C2,"-") ถ้าหารได้จะแสดงผลหาร ถ้า C2 เป็น 0 จะแสดงขีด
IFERROR กับ IFNA ต่างกันยังไง?
IFERROR จับ error ทุกชนิด IFNA จับเฉพาะ #N/A (หาไม่เจอ) ใช้ IFNA กับ VLOOKUP / XLOOKUP / MATCH จะปลอดภัยกว่า เพราะ error อื่นที่บอกว่าสูตรผิดยังแสดงให้เห็น
ซ่อน #DIV/0! ยังไง?
ใช้ =IFERROR(B2/C2,0) หรือ "-" หรือเช็คตัวหารก่อน =IF(C2=0,"-",B2/C2)
IFERROR ทำให้ยอดรวมผิดได้ไหม?
ได้ ถ้าให้คืนค่า 0 เมื่อ VLOOKUP หาไม่เจอ แถวที่รหัสผิดจะกลายเป็น 0 เงียบ ๆ ยอดรวมจะขาดโดยไม่มีอะไรเตือน ให้คืนข้อความเตือนแทน
IFERROR ใน Excel เหมือน Google Sheets ไหม?
เหมือนกันทุกอย่าง รวมถึง IFNA ที่มีใน Excel 2013 ขึ้นไป
