Table of contents
本教程探讨了Excel ISERROR函数的实际用途,并展示了如何测试不同公式的错误。
当你写了一个Excel不理解或无法计算的公式时,它会通过显示一个错误信息来引起你的注意。 ISERROR函数可以帮助你捕捉错误,并在发现错误时提供一个替代方案。
Excel中的ISERROR函数
Excel的ISERROR函数可以捕捉各种错误,包括#CALC!、#DIV/0!、#N/A、#NAME?、#NUM!、#NULL!、#REF!、#VALUE!和#SPILL!。 其结果是一个布尔值:如果检测到错误则为TRUE,否则为FALSE。
该功能在Excel 2000到2021年的所有版本和Excel 365中都可用。
ISERROR函数的语法就像这样简单。
ISERROR(value)在哪里? 价值 是要检查错误的单元格值或公式。
Excel的ISERROR公式
要创建一个最简单的ISERROR公式,需要提供一个你想测试错误的单元格的引用。 例如。
=ISERROR(A2)
如果发现任何错误,你将得到TRUE。 如果在被测试的单元中没有错误,你将得到FALSE。
Excel中的IF ISERROR公式
要想在错误发生时返回一个自定义的信息或执行不同的计算,可将ISERROR与IF函数一起使用。 通用公式如下。
如果(ISERROR( 公式 (...), text_or_calculation_if_error , 公式 ())翻译成人类的语言,它说:如果主公式的结果是错误的,显示指定的文本或运行另一个计算,否则返回公式的正常结果。
在下图中,用总数除以数量产生了几个错误。 价格 列。
要用一个自定义的文本替换所有不同的错误代码,你可以使用以下IF ISERROR公式。
=IF(ISERROR(A2/B2), "未知", A2/B2)
在Excel 2007及以后的版本中,借助于内置的IFERROR函数可以实现同样的结果。
=IFERROR(A2/B2, "未知")
应该注意的是,IFERROR公式运行得更快一些,因为它只进行一次A2/B2的计算。 而IF ISERROR计算两次--首先看是否产生错误,如果测试为FALSE,再计算一次。
IF ISERROR VLOOKUP公式
在VLOOKUP中使用ISERROR,实际上是上面讨论的IF ISERROR公式的一个特殊情况。 当VLOOKUP函数找不到查询值或因其他原因失败时,你可以通过使用这种语法显示一个自定义的文本信息。
if(iserror(vlookup(...)), " 自定义文本 ", vlookup(...))在这个例子中,我们把时间从查询表(D3:E10)拉到主表(A3:B15)。 如果查询值(参与者的名字)在查询表中不存在,我们将返回 "不合格"。
=IF(ISERROR(VLOOKUP(A3, $D$3:$E$10, 2, FALSE)), "不合格", VLOOKUP(A3, $D$3:$E$10, 2, FALSE)
提示:如果你想显示一个自定义文本,只有当一个 没有找到查询值 (#N/A错误)忽略其他错误,然后在Excel 2013及以后的版本中使用IFNA VLOOKUP公式或在旧版本中使用IF ISNA VLOOKUP。
IF ISERROR INDEX MATCH公式
当在INDEX MATCH组合(或Excel 365中的INDEX XMATCH公式)的帮助下执行查找时,你可以通过使用相同的技术来捕获和处理任何可能的错误--ISERROR函数检查错误,当发生任何错误时,IF显示指定文本。
如果(iserror(index ( 返回列 , MATCH ( 查找_值 , 查询栏 , 0)))), " 自定义文本 ", INDEX ( 返回列 , MATCH ( 查找_值 , 查询栏 , 0)))假设查找表的第一列有时间,由于VLOOKUP不能向其左侧查找,我们使用INDEX MATCH公式从D列提取时间。
=index($d$3:$d$10, match(a3, $e$3:$e$10, 0))
然后,你把它嵌套在上述的通用公式中,用你想要的任何文本来替换被抓住的错误。
=IF(ISERROR(INDEX($D$3:$D$10, MATCH(A3, $E$3:$E$10, 0)), "不合格", INDEX($D$3:$D$10, MATCH(A3, $E$3:$E$10, 0) ))
注意:与IF ISERROR VLOOKUP公式一样,只捕获#N/A错误更有意义,不要掩盖公式本身的潜在问题。 为此,在Excel 2013和更高版本中用IFNA包装你的INDEX MATH公式,或在早期版本中用IF ISNA包装。
IF ISERROR 是/否 公式
在前面所有的例子中,如果不是错误,IF ISERROR返回主公式的结果。 然而,它也可以以不同的方式工作--如果有错误,返回一些东西,如果没有错误,返回其他东西。
如果(ISERROR( 公式 (...)), " text_if_error ", " text_if_no_error ")在我们的样本数据集中,假设你对确切的时间不感兴趣,你只想知道A组的哪些参与者是合格的,哪些是不合格的。 要做到这一点,使用MATCH函数将A列的名字与D列的合格参与者列表进行比较,然后将结果送至ISERROR。 如果D列中没有名字(MATCH返回错误),得到如果名字出现在D列(没有错误),返回 "是 "或 "合格"。
=IF(ISERROR(MATCH(A3, $D$3:$D$10, 0)), "否", "是" )
如何计算错误的数量
为了得到某一列的错误数,你需要检查一个范围,而不仅仅是一个单元格。 为此,将目标范围 "喂 "给ISERROR,并使用双单数运算符(--)将返回的布尔值强制为1和0。 SUM或SUMPRODUCT函数可以将这些数字相加,得出最终结果。
比如说。
=sum(-iserror(c2:c10))
请注意,这只在支持动态数组的Excel 365和Excel 2021中作为常规公式工作。 在Excel 2019和更早的版本中,你需要按Ctrl + Shift + Enter来创建一个数组公式(不要手动输入大括号,那是不行的!)。
{=SUM(--ISERROR(C2:C10))}
另外,你也可以使用SUMPRODUCT函数,它可以原生处理数组,所以在所有版本中都可以用通常的回车键完成公式。
=sumproduct(--iserror(c2:c10))
Excel中ISERROR和IFERROR的区别
ISERROR和IFERROR函数都是用来捕获和处理Excel中的错误。 其区别如下。
- 在其纯粹的形式中,ISERROR只是测试该值是否为错误。 它在所有Excel版本中都可用。
- IFERROR函数被设计用来抑制或掩盖错误--当发现错误时,它返回你指定的另一个值。 它在Excel 2007和更高版本中可用。
乍一看,IFERROR看起来像是IF ISERROR公式的速记替代品。 然而,仔细一看,你可以发现其中的区别。
- IFERROR允许你只指定 value_if_error 如果没有错误,它总是返回测试值/公式的结果。
- IF ISERROR提供了更多的灵活性,让你处理这两种情况--如果出现错误应该怎么办,如果没有错误怎么办。
为了更好地说明这一点,请考虑这些公式。
=IFERROR(A1, "计算错误")
=IF(ISERROR(A1), "计算错误", A1)
这两个公式是等价的--都是检查A1中的公式驱动的值,如果是错误,则返回 "计算错误",否则--返回该值。
但如果你想在A1中的值不是错误的情况下进行一些计算呢? IFERROR函数无法做到这一点。 在IF ISERROR的情况下,只要在最后一个参数中输入想要的计算即可。 例如。
=IF(ISERROR(A1), "计算错误", A1*2)
正如你所看到的,这个较长的IFERROR公式的变体,通常被认为是过时的,但仍然可以是有用的:)
可用的下载
ISERROR公式示例(.xlsx文件)。