EP08. “IFNA IFNA 函数”
🔒 登录后可标记已读- IFNA 跟 EP01 的 IFERROR 很像,差别是 IFNA 只专门拦截
#N/A这一种错误 - 其他类型的错误不会被拦截,更适合「只想处理查无结果」的场景
- 讲基础用法、ISNA 检测函数,以及旧版本的替代写法
- 前置知识是 EP01 的 IFERROR
- 学完能更精准地处理 VLOOKUP 找不到结果的情况
重点内容
适用版本
IFNA 从 Excel 2013 开始才有;Excel 2010 / 2007 需要用替代写法。
IFNA 和 IFERROR 怎么选
| 函数 | 拦截范围 | 适合场景 |
|---|---|---|
| IFNA | 只拦截 #N/A | 只想处理「查无结果」,公式本身写错时仍会正常报错提醒你 |
| IFERROR | 拦截所有类型错误 | 不在意是哪种错误,只想有替代结果 |
问题场景:VLOOKUP 找不到匹配项
VLOOKUP 找不到对应的值时,会返回 #N/A 错误。
用 IFNA 替换成友善提示
=IFNA(VLOOKUP(A1,B1:C10,2,FALSE),"Not found")
如果 VLOOKUP 找不到匹配,显示 "Not found";如果 VLOOKUP 本身有错误(例如公式写错),IFNA 不会拦截,会照常显示原本的错误代码,方便你发现公式本身的问题。
结果没有错误时
如果 VLOOKUP 有正常找到匹配项,IFNA 会直接返回 VLOOKUP 查到的结果。
ISNA 函数:单纯检测是否为 #N/A
=ISNA(A1)
返回 TRUE 或 FALSE,只判断是不是 #N/A 这个特定错误,不像 IFERROR/IFNA 会直接替换结果。
旧版本替代写法(Excel 2010 / 2007)
- 用
IF搭配ISNA:
=IF(ISNA(VLOOKUP(A1,B1:C10,2,FALSE)),"Not found",VLOOKUP(A1,B1:C10,2,FALSE))
- 或者改用范围更广的
IFERROR(会拦截所有类型错误,不只是 #N/A):
=IFERROR(VLOOKUP(A1,B1:C10,2,FALSE),"Not found")
函数速查
| 函数 | 语法 | 用途 | 例子 |
|---|---|---|---|
| IFNA | =IFNA(value,value_if_na) | 只拦截 #N/A 错误,返回替代值 | =IFNA(VLOOKUP(...),"Not found") |
| ISNA | =ISNA(value) | 判断是否为 #N/A,返回 TRUE/FALSE | =ISNA(A1) |
学完你会
- ✅ 能用 IFNA 精准拦截 #N/A 错误,不影响其他类型错误的报错提示
- ✅ 能用 ISNA 单纯检测一个值是不是 #N/A,不直接替换结果
- ✅ 知道 Excel 2010/2007 没有 IFNA,要改用 IF+ISNA 或 IFERROR 代替
常见错误
- 该用 IFNA 精准处理「查无结果」的场景,却用了范围更广的 IFERROR,结果把公式本身写错的问题也一起悄悄隐藏了
- 在 Excel 2010/2007 直接套用 IFNA 函数,因为版本不支持会直接报错,要改用 IF+ISNA 或 IFERROR
- 把 ISNA(只判断)和 IFNA(判断并替换)搞混,以为 ISNA 会自动改变显示结果
Sources
Blog / Website: