Table of contents
本教程展示了如何在Excel中使用IFERROR来捕捉错误,并用一个空白单元格、另一个值或一个自定义信息来替换它们。 你将学习如何在Vlookup和索引匹配中使用IFERROR函数,以及它与IF ISERROR和IFNA的比较。
阿基米德曾经说过:"给我一个站立的地方,我就能移动地球。"一个Excel用户会说:"给我一个公式,我就能让它返回错误。"在本教程中,我们不会研究如何在Excel中返回错误,我们更愿意学习如何防止错误,以保持你的工作表干净,公式透明。
Excel IFERROR函数--语法和基本用途
Excel中的IFERROR函数被设计用来捕获和管理公式和计算中的错误。 更具体地说,IFERROR检查一个公式,如果它评估为一个错误,则返回你指定的另一个值;否则,返回公式的结果。
Excel IFERROR函数的语法如下。
IFERROR(value, value_if_error)在哪里?
- 价值 (必填) - 检查错误的内容,可以是公式、表达式、数值或单元格引用。
- 价值_如果_错误 (required) - 如果发现错误要返回什么,可以是一个空字符串(空白单元格),文本信息,数字值,另一个公式或计算。
例如,当划分两列数字时,如果其中一列包含空单元格、零或文本,你可能会得到一堆不同的错误。
为了防止这种情况的发生,使用IFERROR函数以你想要的方式捕捉和处理错误。
如果错误,则为空白
提供一个空字符串(")给 value_if_error 参数,如果发现错误,则返回一个空白单元格。
=iferror(a2/b2, "")
如果出错,则显示一个信息
你也可以显示你自己的信息,而不是Excel的标准错误符号。
=IFERROR(A2/B2, "计算错误")
关于Excel IFERROR函数,你应该知道的5件事
- Excel中的IFERROR函数可以处理所有的错误类型,包括#DIV/0!、#N/A、#NAME?、#NULL!、#NUM!、#REF!和#VALUE!。
- 取决于以下内容 value_if_error 参数,IFERROR可以用你自定义的文本信息、数字、日期或逻辑值、另一个公式的结果或空字符串(空白单元格)替换错误。
- 如果 价值 参数是一个空白单元格,它被视为一个空字符串(''),但不是一个错误。
- IFERROR是在Excel 2007中引入的,在Excel 2010、Excel 2013、Excel 2016、Excel 2019、Excel 2021和Excel 365的所有后续版本中都可以使用。
- 要在Excel 2003和早期版本中捕获错误,请将ISERROR函数与IF结合起来使用,如本例所示。
IFERROR公式示例
下面的例子展示了如何在Excel中结合其他函数使用IFERROR,以完成更复杂的任务。
Excel的IFERROR与Vlookup
IFERROR函数最常见的用途之一是告诉用户,他们要搜索的值在数据集中不存在。 为此,你可以用IFERROR来包装一个VLOOKUP公式,像这样。
iferror(vlookup( ... ), "未找到")如果查询值不在你要查询的表中,普通的Vlookup公式会返回#N/A错误。
为了让你的用户放心,将VLOOKUP包裹在IFERROR中,并显示一个更有信息量和用户友好的信息。
=IFERROR(VLOOKUP(A2, 'Lookup table'!$A$2:$B$4, 2,FALSE), "未找到" )
下面的截图显示了Excel中的这个Iferror公式。
如果你想只捕获#N/A错误而不是所有错误,请使用IFNA函数而不是IFERROR。
关于更多Excel IFERROR VLOOKUP公式的例子,请查看这些教程。
- 使用Vlookup的Iferror来捕获和处理错误
- 如何获得第N次出现的查询值
- 如何获得所有出现的查询值
嵌套IFERROR函数在Excel中做连续的Vlookups
当你需要根据前一个Vlookup的成功或失败来执行多个Vlookup时,你可以将两个或多个IFERROR函数嵌套在一起。
假设你有一些来自公司区域分支机构的销售报告,你想得到某个订单ID的金额。 以A2作为当前表的查询值,A2:B5作为3个查询表(报告1、报告2和报告3)的查询范围,公式如下。
=IFERROR(VLOOKUP(A2,'报告1'!A2:B5,2,0),IFERROR(VLOOKUP(A2,'报告2'!A2:B5,2,0),IFERROR(VLOOKUP(A2,'报告3'!A2:B5,2,0), "没有找到"))
其结果将类似于这样。
关于公式逻辑的详细解释,请看如何在Excel中做连续的Vlookups。
数组公式中的IFERROR
正如你可能知道的,Excel中的数组公式是为了在一个公式中进行多种计算。 如果你提供一个数组公式或表达式,导致在 价值 下面的例子显示了详细情况。
比方说,你有 共计 在B栏和 价格 在C列,你想计算的是 总数量 这可以通过使用以下方法实现 阵列公式。 其中B2:B4区域的每个单元格除以C2:C4区域的相应单元格,然后将结果相加。
=sum($b$2:$b$4/$c$2:$c$4)
只要除数区没有0或空单元格,该公式就能正常工作。 如果至少有一个0值或空单元格,就会返回#DIV/0!错误。
要解决这个错误,只需在IFERROR函数中做除法。
=sum(iferror($b$2:$b$4/$c$2:$c$4,0))
该公式所做的是用B列的一个值除以每一行C列的一个值(100/2,200/5和0/0),并返回结果数组{50;40;#DIV/0!}。 IFERROR函数捕捉所有#DIV/0!的错误并将其替换为零。 然后,SUM函数将结果数组{50;40;0}中的数值相加,输出最终结果(50+40=90)。
注意:请记住,数组公式应该通过按Ctrl + Shift + Enter快捷键完成。
IFERROR与IF ISERROR
现在你知道了在Excel中使用IFERROR函数是多么容易,你可能会想,为什么有些人仍然倾向于使用IF ISERROR组合。 与IFERROR相比,它有什么优势吗? 没有。 在Excel 2003及以下版本的坏日子里,当IFERROR还不存在时,IF ISERROR是唯一可能捕获错误的方法。 在Excel 2007及以后,它只是一种更复杂的方式来达到同样的效果。
例如,为了捕捉Vlookup的错误,你可以使用以下任一公式。
在Excel 2007 - Excel 2016中。
iferror(vlookup( ... ), "未找到")在所有Excel版本中。
IF(ISERROR(VLOOKUP(...)), "未找到", VLOOKUP(...)注意,在IF ISERROR VLOOKUP公式中,你必须进行两次Vlookup。 用简单的英语,该公式可读为:如果Vlookup结果有误,返回 "未找到",否则输出Vlookup结果。
下面是一个Excel If Iserror Vlookup公式的真实例子。
=IF(ISERROR(VLOOKUP(D2, A2:B5,2,FALSE)), "未找到", VLOOKUP(D2, A2:B5,2,FALSE ))
欲了解更多信息,请参见《在Excel中使用ISERROR函数》。
IFERROR与IFNA
在Excel 2013中引入的IFNA是另一个检查公式错误的函数。 其语法与IFERROR相似。
IFNA(value, value_if_na)IFNA与IFERROR有什么不同? IFNA的功能是抓取 只有#N/A错误 而IFERROR处理所有的错误类型。
在哪些情况下你可能想使用IFNA? 当掩盖所有的错误是不明智的。 例如,当处理重要或敏感的数据时,你可能想提醒你的数据集中可能存在的故障,带有 "#"符号的标准Excel错误信息可能是生动的视觉指示。
让我们看看如何制作一个公式,显示 "未找到 "信息,而不是N/A错误,N/A错误是在数据集中不存在查找值时出现的,但会让你注意到其他Excel错误。
假设你想从查询表中拉出数量,如下面的截图所示。 使用Excel Iferror Vlookup公式会产生一个美观的结果,但从技术上讲是不正确的,因为 柠檬 在查找表中确实存在。
要抓住#N/A但显示#DIV/0的错误,可在Excel 2013和Excel 2016中使用IFNA函数。
=IFNA(VLOOKUP(F3,$A$3:$D$6,4,FALSE), "未找到")
或者,在Excel 2010和早期版本中的IF ISNA组合。
=IF(ISNA(VLOOKUP(F3,$A$3:$D$6,4,FALSE)), "未找到", VLOOKUP(F3,$A$3:$D$6,4,FALSE))
IFNA VLOOKUP和IF ISNA VLOOKUP公式的语法与前面讨论的IFERROR VLOOKUP和IF ISERROR VLOOKUP类似。
如下面的截图所示,Ifna Vlookup公式只对查询表中不存在的项目返回 "未找到"( 桃子 )。 对于 柠檬 ,它显示#DIV/0!表明我们的查找表包含一个除以零的错误。
更多细节,请参见《在Excel中使用IFNA函数》。
在Excel中使用IFERROR的最佳实践
现在你已经知道,IFERROR函数是在Excel中捕捉错误并以空白单元格、零值或你自己的自定义信息来掩盖它们的最简单方法。 然而,这并不意味着你应该用错误处理来包装每一个公式。 以下简单的建议可能有助于你保持平衡。
- 不要无缘无故地诱发错误。
- 用IFERROR包住公式中最小的部分。
- 要想只处理特定的错误,请使用一个范围较小的错误处理函数。
- IFNA或IF ISNA只捕捉#N/A错误。
- ISERR用于捕捉除#N/A以外的所有错误。
这就是如何在Excel中使用IFERROR函数来捕获和处理错误。 要想仔细看看本教程中讨论的公式,欢迎下载我们的IFERROR Excel工作簿样本。 感谢你的阅读,希望下周能在我们的博客上见到你。