Table of contents
在本教程中,我们将了解如何在Excel中使用ISERROR与VLOOKUP来有效地处理各种错误。
VLOOKUP是最令人困惑的Excel函数之一,困扰着许多问题。 无论你在哪个表中,#N/A错误都是常见的,#NAME和#VALUE也时常出现。 使用VLOOKUP与ISERROR可以帮助你捕捉所有可能的错误,并以最适合你情况的方式处理它们。
为什么VLOOKUP会出现错误?
VLOOKUP公式中最常见的错误是 #N/A 这可能是由于不同的原因而发生的。
- 查询值不存在于查询阵列中。
- 查询值拼写错误。
- 查询值或查询列中有前导或尾部的空格。
- 查询列不是表格数组的最左列。
此外,你可能会遇到一个 #VALUE! 如果函数名称中存在拼写错误,则会出现一个 #NAME? 会出现错误。
如需充分参考,请参见我们之前的文章《为什么Excel VLOOKUP不起作用》。
IF ISERROR VLOOKUP公式,用自定义文本替换错误
为了掩盖所有可能由VLOOKUP引发的错误,你可以像这样把它放在IF ISERROR公式里面。
if(iserror(vlookup(...)), " text_if_error ", vlookup(...))作为一个例子,让我们拉出A组学生考试不及格的科目名称。
=vlookup(a3, $d$3:$e$9, 2, false)
结果,你得到了一堆#N/A错误,这可能会给人留下公式被破坏的印象。
事实上,这些错误只是表明一些查询值(A3:A14)在查询列表(D3:D9)中没有找到。 为了清楚地表达这个意思,将你的VLOOKUP公式嵌套在IF ISERROR结构中。
=IF(ISERROR(VLOOKUP(A3, $D$3:$E$9, 2, FALSE)), "No", VLOOKUP(A3, $D$3:$E$9, 2, FALSE)
这将捕捉错误并返回你的自定义文本信息。
提示和说明。
- 这个配方的主要优点是,它可以很好地适用于 所有版本 在现代版本中,有更简单和更紧凑的替代品。
- ISERROR函数抓取 绝对所有的错误 如果你希望只在没有找到查询值(#N/A错误)时显示一个自定义信息,请使用IF ISNA VLOOKUP(在所有版本中)或IFNA VLOOKUP(在Excel 2013及以后版本中)。
ISERROR VLOOKUP在出错时返回空白单元格
要想在错误发生时有一个空白单元格,让你的公式返回一个空字符串(""),而不是一个自定义文本。
if(iserror(vlookup(...)), "", vlookup(...))在我们的案例中,该公式采取这种形式。
=if(iserror(vlookup(a3, $d$3:$e$9, 2, false)), " ", vlookup(a3, $d$3:$e$9, 2, false)
结果与预期完全一致--如果在查找表中没有找到学生的名字,则为空白单元格。
提示:以类似的方式,你可以用零、破折号或任何其他你喜欢的字符替换VLOOKUP错误。 只要用所需的字符来代替空字符串。
IF ISERROR VLOOKUP 是/否公式
在某些情况下,你可能正在寻找一些东西,但不是拉动匹配,而是想返回 是 (如果找到了查询值,则为其他文本)和 没有 (如果没有找到查询值)。 要做到这一点,你可以使用这个通用公式。
if(iserror(vlookup(...)), " text_if_not_found ", " text_if_found ")在我们的样本数据集中,假设你想知道哪些学生没有通过测试,为了达到这个目的,将已经熟悉的ISERROR VLOOKUP公式服务于IF的逻辑测试,并告诉它如果没有找到值,则输出 "No"(ISERROR VLOOKUP返回TRUE),如果找到则输出 "Yes"(ISERROR VLOOKUP返回FALSE)。
=IF(ISERROR(VLOOKUP(A3, $D$3:$E$9, 2, FALSE)), "否", "是")
ISERROR VLOOKUP的替代方案
IF ISERROR组合是在Excel中实现Vlookup无错误的最古老的时间证明技术。 随着时间的推移,新的函数不断发展,为执行同样的任务提供了更容易的方法。 下面,我们将讨论其他可能的解决方案,以及每一种解决方案的最佳应用时间。
iferror vlookup
在Excel 2007和更高版本中可用
从2007版开始,Excel有一个特殊的函数,名为IFERROR,用于检查公式中的错误,如果检测到任何错误,则返回你自己的文本(或运行一个替代公式)。
iferror(vlookup(...), " text_if_error ")现实生活中的公式如下。
=IFERROR(VLOOKUP(A3, $D$3:$E$9, 2, FALSE), "No")
乍一看,它像是IF ISERROR VLOOKUP公式的一个较短的类似物。 然而,有一个本质的区别。
- IFERROR VLOOKUP假定你总是想要VLOOKUP的结果,如果它不是一个错误的话。
- IF ISERROR VLOOKUP让你指定在出现错误时返回什么,在没有错误时返回什么。
更多细节,请参见《在Excel中使用IFERROR与VLOOKUP》。
如果是Vlookup
在Excel 2000和更高版本中工作
当你想只捕获#N/A而不捕获任何其他错误时,ISNA函数就派上用场了。 其语法与IF ISERROR VLOOKUP的语法相同。
if(isna(vlookup(...)), " text_if_error ", vlookup(...))但在某些情况下,这个看似相同的公式可能会产生不同的结果。
=IF(ISNA(VLOOKUP(A3, $D$3:$E$9, 2, FALSE)), "No", VLOOKUP(A3, $D$3:$E$9, 2, FALSE)
在下面的图片中,单元格A13包含大量的尾部空格,因为查询值的总长度超过了255个字符。 结果,公式触发了#VALUE!错误,将你的注意力吸引到该单元格,并鼓励你调查原因。 在这种情况下,ISERROR VLOOKUP将返回 "No",这只会掩盖问题,提供一个绝对错误的结果。
何时使用。
当你只想在没有找到查找值时显示一些文本,而不想掩盖VLOOKUP公式本身的潜在问题时,例如当函数名称输入错误(#NAME?)或没有指定查找工作簿的完整路径(#VALUE!)时,这个公式的效果非常好。
更多信息,请参见Excel中的ISNA函数及公式示例。
IFNA VLOOKUP
在Excel 2013和更高版本中可用
它是IF ISNA组合的现代替代品,让你以更简单的方式处理#N/A错误。
ifna(vlookup(...), " text_if_error ")下面是我们的IF ISNA VLOOKUP公式的一个速记等价物。
=IFNA(VLOOKUP(A3, $D$3:$E$9, 2, FALSE), "No")
何时使用。
这是一个理想的解决方案,可以在现代版本的Excel(2013 - 365)中捕获和处理#N/A错误。
详细情况请见Excel IFNA函数。
XLOOKUP
在Excel 2021和Excel 365中支持
由于其内置的 "如果错误 "功能,XLOOKUP函数是在Excel中进行无#N/A错误查询的最简单的方法。 简单地说,在可选的第4个参数中输入你的用户友好文本,名为 if_not_found .
比如说。
=XLOOKUP(A3, $D$3:$D$9, $E$3:$E$9, "No")
限制:它只捕获#N/A错误,忽略其他类型。
欲了解更多信息,请查看Excel中的XLOOKUP函数。
正如你所看到的,Excel提供了相当多的不同选项来处理VLOOKUP的错误。 希望本教程能让你了解如何有效地使用它们。 感谢你的阅读,希望下周能在我们的博客上见到你。
可用的下载
ISERROR与VLOOKUP的例子(.xlsx文件)。