เวลาเขียน VLOOKUP หรือ XLOOKUP แล้วหาข้อมูลไม่เจอ Excel จะขึ้น #N/A ซึ่งดูน่าตกใจทั้งที่จริงๆ แค่ “ไม่พบ” เฉยๆ สูตร IFNA เกิดมาเพื่อจัดการเรื่องนี้โดยเฉพาะ มันจะดักเฉพาะ #N/A แล้วเปลี่ยนเป็นข้อความที่เราต้องการ แต่ยังปล่อยให้ Error ชนิดอื่นโผล่ตามปกติ เพื่อเตือนเราว่าสูตรมีอะไรผิดจริงๆ
รูปแบบของสูตร IFNA
=IFNA(สูตรที่ต้องการคำนวณ, ค่าที่ให้แสดงถ้าเจอ #N/A)
ใช้ได้ตั้งแต่ Excel 2013 เป็นต้นมา รวมถึง Microsoft 365 ทุกเวอร์ชัน หลักการคือ “ถ้าผลลัพธ์เป็น #N/A ให้ใช้ค่าสำรอง ถ้าไม่ใช่ ก็แสดงผลตามจริง”
ตัวอย่างที่ 1: ครอบ VLOOKUP ที่หารหัสไม่เจอ
=IFNA(VLOOKUP(A2,$E$2:$F$4,2,FALSE),"ยังไม่มีในระบบ")| A | B | C | E | F | ||
|---|---|---|---|---|---|---|
| 1 | รหัสพนักงาน | ชื่อ | แผนก | รหัส | แผนก | |
| 2 | E01 | สมชาย | บัญชี | E01 | บัญชี | |
| 3 | E09 | สมหญิง | ยังไม่มีในระบบ | E02 | ขาย | |
| 4 | E02 | วิชัย | ขาย | E03 | คลัง |
แถวที่ 3 รหัส E09 ไม่มีอยู่ในตารางอ้างอิง E2:F4 สูตร VLOOKUP เดิมจะคืน #N/A แต่พอครอบ IFNA ไว้ จะแสดง “ยังไม่มีในระบบ” แทน ส่วนแถวที่หาเจอก็แสดงชื่อแผนกตามปกติ สังเกตว่าช่วงตารางอ้างอิงล็อกเป็น $E$2:$F$4 ตามหลัก Absolute Reference เพื่อให้คัดลอกสูตรลงมาแล้วช่วงไม่เลื่อน
ตัวอย่างที่ 2: IFNA ต่างจาก IFERROR ตรงไหน
ทั้งสองสูตรใช้แทนกันได้ในหลายกรณี แต่มีความต่างที่สำคัญ สมมติว่าเราพิมพ์ช่วงตารางผิดจนสูตรอ้างอิงเซลล์ที่ถูกลบไปแล้ว (เกิด #REF!)
=IFNA(VLOOKUP(A2,#REF!,2,FALSE),"ไม่พบ")| A | B | C | |
|---|---|---|---|
| 1 | รหัส | ชื่อ | ผล IFNA |
| 2 | E01 | สมชาย | #REF! |
IFNA ปล่อยให้ #REF! โผล่ออกมา เพราะมันไม่ใช่ #N/A ทำให้เรารู้ทันทีว่าสูตรพัง ต้องไปแก้ ถ้าใช้ IFERROR แทน มันจะกลบทุก Error รวมถึง #REF! เป็นข้อความ “ไม่พบ” ทำให้เราไม่รู้เลยว่าจริงๆ แล้วสูตรมีบั๊ก
| สูตร | ดักจับ | เหมาะกับ |
| IFNA | เฉพาะ #N/A |
งานค้นหาข้อมูล ที่อยากให้ Error อื่นเตือนเราได้ |
| IFERROR | ทุก Error (#N/A, #DIV/0!, #VALUE!, #REF!, #NAME? ฯลฯ) |
งานที่มั่นใจว่าสูตรถูกแล้ว แค่อยากซ่อน Error ที่คาดเดาได้ |
ตัวอย่างที่ 3: ใช้กับ MATCH เพื่อเช็คว่ามีรายชื่อซ้ำไหม
=IFNA(MATCH(A2,$B$2:$B$5,0),"ไม่อยู่ในลิสต์เดิม")| A | B | C | |
|---|---|---|---|
| 1 | รายชื่อใหม่ | ลิสต์เดิม | อยู่ลำดับที่ |
| 2 | ก้อง | ก้อง | 1 |
| 3 | แนน | เจน | ไม่อยู่ในลิสต์เดิม |
| 4 | เจน | ปุ๊ก | 3 |
MATCH คืนลำดับที่พบชื่อในลิสต์เดิม ถ้าไม่พบจะเป็น #N/A พอครอบ IFNA จะเปลี่ยนเป็นข้อความบอกว่าเป็นรายชื่อใหม่ วิธีนี้ใช้เทียบสองรายชื่อว่าใครเพิ่มเข้ามาใหม่บ้างได้เร็วมาก
ข้อควรรู้เพิ่มเติม
- XLOOKUP มีตัวเลือก if_not_found ในตัว — ถ้าใช้ XLOOKUP อยู่แล้ว สามารถใส่ค่าสำรองเป็นอาร์กิวเมนต์ที่ 4 ได้เลย เช่น
=XLOOKUP(A2,รหัส,แผนก,"ไม่พบ")ไม่ต้องครอบ IFNA - อย่าใช้ IFNA กลบ #N/A ที่ควรแก้ — บางที
#N/Aเกิดจากพิมพ์รหัสมีช่องว่างเกิน หรือชนิดข้อมูลไม่ตรงกัน (ตัวเลขที่เก็บเป็นข้อความ) ควรแก้ต้นเหตุก่อน ไม่ใช่ซ่อนไว้ - เวอร์ชันเก่ากว่า 2013 — ถ้าเปิดไฟล์ใน Excel รุ่นเก่ามาก IFNA จะกลายเป็น
#NAME?กรณีนี้ใช้IF(ISNA(...),...)แทนได้
อ่านเพิ่มเรื่องการใช้ตัวจับ Error คู่กับงานค้นหาได้ที่ ใช้ IFERROR ร่วมกับ VLOOKUP/XLOOKUP และ INDEX + MATCH