สูตรค้นหาข้อมูลอย่าง VLOOKUP, XLOOKUP หรือ INDEX+MATCH มักขึ้น Error เช่น #N/A เวลาหาข้อมูลไม่เจอ ถ้าไฟล์ถูกแชร์ให้คนอื่นดูหรือใช้พิมพ์รายงาน การเห็น Error โผล่เต็มตารางดูไม่เป็นมืออาชีพและอาจสร้างความสับสน บทความนี้รวมวิธีครอบสูตรค้นหายอดฮิตด้วย IFERROR แบบละเอียด ครบทุกสูตรค้นหาหลักที่ใช้งานบ่อย
ทำไมต้องครอบสูตร Lookup ด้วย IFERROR
เวลาค้นหาข้อมูลแล้วไม่เจอ Excel จะแสดง Error ในเซลล์ทันที ซึ่งถ้าปล่อยไว้แบบนั้นจะกระทบสูตรอื่นที่อ้างอิงเซลล์นี้ต่อ (เช่น SUM ที่รวมคอลัมน์ที่มี Error จะพังไปทั้งคอลัมน์) การครอบด้วย IFERROR ช่วยให้แสดงข้อความที่อ่านเข้าใจง่ายแทน เช่น “ไม่พบข้อมูล” หรือค่า 0 แทน
IFERROR + VLOOKUP
รูปแบบสูตรพื้นฐานที่สุดคือครอบ VLOOKUP ทั้งก้อนด้วย IFERROR
=IFERROR(VLOOKUP(ค่าที่ค้นหา, ตาราง, คอลัมน์ที่ต้องการ, FALSE), "ข้อความเมื่อไม่พบ")
=IFERROR(VLOOKUP(A2,ราคาสินค้า,2,FALSE),"ไม่พบสินค้า")| A | B | D | |
|---|---|---|---|
| 1 | รหัสสินค้า | ชื่อสินค้า | ราคา |
| 2 | A102 | เมาส์ไร้สาย | ไม่พบสินค้า |
| 3 | A101 | คีย์บอร์ด | 590 |
ถ้ารหัส A102 ยังไม่มีในตารางราคา สูตร VLOOKUP เดิมจะขึ้น #N/A แต่พอครอบ IFERROR ไว้ จะเปลี่ยนเป็นข้อความ “ไม่พบสินค้า” ที่คนอ่านเข้าใจได้ทันที
IFERROR + XLOOKUP
XLOOKUP มีพารามิเตอร์ [if_not_found] ในตัวอยู่แล้ว ทำให้ในหลายกรณีไม่จำเป็นต้องครอบด้วย IFERROR เพิ่ม แต่ถ้าต้องการดักจับ Error ประเภทอื่นที่ไม่ใช่แค่หาไม่เจอ (เช่น พิมพ์ชื่อช่วงผิด หรือสูตรอ้างอิงผิด) การครอบด้วย IFERROR ยังมีประโยชน์อยู่
=IFERROR(XLOOKUP(A2,รหัส,ราคา),"ไม่พบสินค้า")| A | B | D | |
|---|---|---|---|
| 1 | รหัสสินค้า | ชื่อสินค้า | ราคา |
| 2 | A102 | เมาส์ไร้สาย | ไม่พบสินค้า |
| 3 | A101 | คีย์บอร์ด | 590 |
วิธีที่สั้นกว่าคือใช้พารามิเตอร์ในตัว XLOOKUP โดยตรง =XLOOKUP(A2,รหัส,ราคา,"ไม่พบสินค้า") ให้ผลลัพธ์เดียวกันโดยไม่ต้องพึ่ง IFERROR เลย เหมาะกับกรณีที่ต้องการดักเฉพาะ “หาไม่เจอ” อย่างเดียว
IFERROR + INDEX/MATCH
ใครที่ยังใช้ INDEX+MATCH แทน VLOOKUP ก็ครอบด้วย IFERROR ได้แบบเดียวกัน
=IFERROR(INDEX(ราคา,MATCH(A2,รหัส,0)),"ไม่พบสินค้า")| A | B | D | |
|---|---|---|---|
| 1 | รหัสสินค้า | ชื่อสินค้า | ราคา |
| 2 | A102 | เมาส์ไร้สาย | ไม่พบสินค้า |
| 3 | A101 | คีย์บอร์ด | 590 |
Fallback Chain: ค้นหาหลายตารางด้วย IFERROR ซ้อนกัน
ถ้ามีข้อมูลกระจายอยู่หลายตาราง (เช่น ราคาสินค้าปีนี้กับปีก่อน) สามารถซ้อน IFERROR หลายชั้นเพื่อค้นหาไล่ไปทีละตารางจนกว่าจะเจอได้
=IFERROR(VLOOKUP(A2,ตารางปีนี้,2,FALSE),IFERROR(VLOOKUP(A2,ตารางปีก่อน,2,FALSE),"ไม่พบในทั้งสองตาราง"))| A | D | |
|---|---|---|
| 1 | รหัสสินค้า | ราคา |
| 2 | A105 | 450 (จากตารางปีก่อน) |
สูตรจะค้นหาในตารางปีนี้ก่อน ถ้าไม่เจอ (เกิด Error) จะไปค้นหาในตารางปีก่อนต่อ ถ้ายังไม่เจออีกจึงแสดงข้อความสุดท้าย เทคนิคนี้มีประโยชน์มากเวลาข้อมูลกระจายอยู่คนละแหล่ง
ข้อผิดพลาดที่พบบ่อย
- ใส่ FALSE ผิดตำแหน่งใน VLOOKUP — ถ้าลืมใส่ FALSE (Exact Match) VLOOKUP อาจคืนค่าใกล้เคียงผิดๆ แทนที่จะขึ้น Error ให้ IFERROR ดักจับ ควรใส่ FALSE เสมอเวลาค้นหาแบบตรงตัว
- ใช้ IFERROR ครอบสูตรทั้งก้อนจนไม่รู้ว่า Error มาจากจุดไหน — ถ้าสูตรซับซ้อนหลายชั้น ควรทดสอบแต่ละส่วนแยกก่อนค่อยครอบ IFERROR ทับ จะได้หาต้นตอปัญหาได้ง่ายเวลาแก้ไข
- ลืมว่า XLOOKUP มี if_not_found ในตัวอยู่แล้ว — ถ้าแค่ต้องการข้อความตอนหาไม่เจอ ใช้พารามิเตอร์ในตัว XLOOKUP จะสั้นกว่าครอบ IFERROR
สรุป
การครอบสูตรค้นหาอย่าง VLOOKUP, XLOOKUP หรือ INDEX/MATCH ด้วย IFERROR ช่วยให้ตารางดูสะอาดขึ้นและป้องกันสูตรอื่นพังตามเวลาข้อมูลหาไม่เจอ รูปแบบพื้นฐานคือ =IFERROR(สูตรค้นหา, ข้อความเมื่อไม่พบ) ส่วน XLOOKUP มีพารามิเตอร์ในตัวให้ใช้ได้เลยโดยไม่ต้องพึ่ง IFERROR เพิ่มก็ได้ ดูพื้นฐานเพิ่มเติมที่ IFERROR ใน Excel, XLOOKUP ต่างจาก VLOOKUP อย่างไร และ INDEX + MATCH ใน Excel