ISNA ตรวจสอบเฉพาะ Error #N/A ที่เกิดจากการค้นหาไม่เจอในฟังก์ชันต่างๆ เช่น VLOOKUP หรือ MATCH มีประโยชน์มากเมื่อต้องแยกแยะระหว่าง “หาไม่เจอ” กับ “สูตรคิดผิด”
=ISNA(value)
=ISNA(value)
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| value | Any | Yes | ค่า เซลล์ หรือผลลัพธ์จากสูตรที่ต้องการตรวจสอบว่าเป็น #N/A หรือไม่ สามารถใส่ได้ทุกชนิด (ตัวเลข ข้อความ ผลลัพธ์สูตร ฯลฯ) |
ใช้ตรวจสอบว่าข้อมูลที่ User กรอกมีอยู่ในฐานข้อมูลหรือไม่ โดยไม่สนใจ Error ประเภทอื่นที่เกิดจากสูตรผิดพลาด
เช็คว่ามีรายการใดในตารางที่ Lookup แล้วไม่พบข้อมูล เพื่อทำรายงานสรุปรายการที่ตกหล่น
ISNA(VLOOKUP("Apple", A1:B10, 2, 0))=ISNA(VLOOKUP("Apple", A1:B10, 2, 0))
TRUE (ถ้าไม่เจอ Apple) / FALSE (ถ้าเจอหรือเกิด Error อื่น)
IF(ISNA(VLOOKUP(A1, Database, 2, 0)), "ไม่พบข้อมูล", VLOOKUP(A1, Database, 2, 0))=IF(ISNA(VLOOKUP(A1, Database, 2, 0)), "ไม่พบข้อมูล", VLOOKUP(A1, Database, 2, 0))
"ไม่พบข้อมูล" หรือค่าจากการค้นหา
IF(ISNA(MATCH(E2, List, 0)), "หาไม่เจอ", IF(ISERROR(MATCH(E2, List, 0)), "Error อื่นๆ", "ค้นหาเจอ"))=IF(ISNA(MATCH(E2, List, 0)), "หาไม่เจอ", IF(ISERROR(MATCH(E2, List, 0)), "Error อื่นๆ", "ค้นหาเจอ"))
"หาไม่เจอ" / "Error อื่นๆ" / "ค้นหาเจอ"
SUMPRODUCT(--ISNA(A1:A100))=SUMPRODUCT(--ISNA(A1:A100))
ตัวเลขแสดงจำนวน #N/A ทั้งหมด
ISNA ไม่ได้แก้ Error หรือทำให้ #N/A หายไป มันแค่ตรวจจับเท่านั้น ถ้าต้องการแก้ให้ใช้ IFNA หรือ IFERROR แทน เช่น =IFNA(VLOOKUP(…), 0) นี่คือวิธีที่จะเปลี่ยน #N/A เป็นค่าอื่น
ISNA ตรวจจับเฉพาะ #N/A เท่านั้น ส่วน ISERROR จะตรวจจับ Error ทุกชนิด (#N/A, #VALUE!, #REF!, #DIV/0!, #NAME?, #NUM!, #NULL! ฯลฯ) ถ้าต้องการรู้เฉพาะว่า “ค้นหาไม่เจอ” ใช้ ISNA แต่ถ้าต้องการจับ Error ใดๆ ใช้ ISERROR
ถ้าต้องการแทนที่ #N/A ด้วยค่าอื่นทันที (เช่น 0 หรือข้อความ) ให้ใช้ IFNA เพราะเขียนสั้นกว่า เช่น =IFNA(VLOOKUP(…), 0) แต่ถ้าต้องการแค่ตรวจสอบเป็น TRUE/FALSE เพื่อนำไปใช้ใน Logic อื่น หรือต้องการนับจำนวน #N/A ให้ใช้ ISNA
เกิดจากการค้นหาไม่เจอในฟังก์ชัน VLOOKUP, HLOOKUP, MATCH, INDEX, LOOKUP, XLOOKUP เป็นต้น บ่อยๆ คือ typo, space ซ่อนอยู่, หรือข้อมูลค้นหาจริงๆ ไม่อยู่ในตาราง หรือ Reference ไป Sheet อื่นซึ่งปิด workbook ไว้
ได้ครับ ISNA ที่นำไปใช้กับ Range จะคืนค่า Array ของ TRUE/FALSE ตามจำนวนเซลล์ เช่น =ISNA(VLOOKUP(A1:A10, Data, 2, 0)) จะได้ผลลัพธ์ 10 ค่า (ใน Excel 365 จะ Spill ลงมาเอง)
เพราะฟังก์ชัน VLOOKUP หรือ MATCH ใช้ได้กับ Single Value ไม่ได้ใช้กับ Array ถ้าต้องการตรวจจับ Error หลายๆ เซลล์พร้อมกัน ลองใช้ IFERROR แทน =IFERROR(VLOOKUP(A:A, Data, 2, 0), “”) แบบนี้ดีกว่า
ISNA คือฟังก์ชันตรวจจับข้อผิดพลาด (Error Detection Function) ที่ตรวจสอบว่าค่าหรือผลลัพธ์จากสูตรเป็น Error แบบ #N/A (Not Available) หรือไม่ ถ้าเป็น #N/A จะคืนค่า TRUE ถ้าไม่ใช่ (รวมถึง Error ชนิดอื่น) จะคืนค่า FALSE
ที่เจ๋งคือ ISNA จะตรวจจับ #N/A อย่างเฉพาะเจาะจงเท่านั้น ไม่เหมือน ISERROR ที่จะจับ Error ทั้งหมด (#VALUE!, #DIV/0!, #REF! ฯลฯ) ดังนั้นถ้าต้องการรู้ว่า “VLOOKUP หาไม่เจอจริงๆ” หรือ “มีข้อมูลแต่สูตรเขียนผิด” ให้ใช้ ISNA ดีกว่า
ส่วนตัวผมใช้ ISNA เป็นจำนวนมากในงาน Data Cleaning เพราะมันช่วยระบุได้ว่าข้อมูลหรือ Lookup Rules ไหนที่มีปัญหา ผมชอบใช้มันควบคู่กับ COUNTIF เพื่อหานับว่ามี #N/A กี่อันในแต่ละ Column เลยครับ