Table of contents
在本教程中,我们将研究如何使用IFERROR和VLOOKUP函数来捕获和处理不同的错误。 此外,你将学习如何通过嵌套多个IFERROR函数在Excel中进行连续的Vlookups。
Excel VLOOKUP和IFERROR--这两个函数单独使用可能相当难理解,更不用说当它们结合在一起的时候了。 在这篇文章中,你会发现一些简单易懂的例子,解决了常见的用途,并清楚地说明了公式的逻辑。
如果你对IFERROR和VLOOKUP函数没有太多经验,不妨先通过上述链接温习一下它们的基础知识。
IFERROR VLOOKUP公式来处理#N/A和其他错误
当Excel Vlookup无法找到一个查询值时,它会抛出一个#N/A错误,像这样。
根据你的业务需要,你可能想用你自己的文本、零或空白单元格来掩饰错误。
例1.IFERROR与VLOOKUP公式,用你自己的文本替换错误
如果你想用你的自定义文本取代标准错误符号,用IFERROR包住你的VLOOKUP公式,并在第二个参数中输入你想要的任何文本( value_if_error ),例如 "未找到"。
iferror(vlookup( ... ), "未找到")在主表的B2处有查询值,在查询表的A2:B4处有查询范围,该公式的形状如下。
=IFERROR(VLOOKUP(B2,'Lookup table'!$A$2:$B$5, 2, FALSE), "未找到" )
下面的截图显示了我们的Excel IFERROR VLOOKUP公式的运行情况。
这个结果看起来更容易理解,而且远没有那么令人生畏,不是吗?
以类似的方式,你可以将INDEX MATCH与IFERROR一起使用。
=IFERROR(INDEX('Lookup table'!$B$2:$B$5,MATCH(B2,'Lookup table'!$A$2:$A$5,0)), "未找到")
IFERROR INDEX MATCH公式在你想从位于查找列左边的列中提取数值时特别有用(左查找),并在没有找到时返回自己的文本。
例2.IFERROR与VLOOKUP,如果没有发现,则返回空白或0
如果你不想在没有找到查询值时显示任何东西,让IFERROR显示一个 空字符串 (""):
iferror(vlookup( ... ),"")在我们的例子中,公式如下。
=IFERROR(VLOOKUP(B2,'Lookup table'!$A$2:$B$5, 2, FALSE), "")
正如你所看到的,当查询值不在搜索列表中时,它没有返回任何信息。
如果你想把错误替换成 零值 ,在最后一个参数中放0。
=IFERROR(VLOOKUP(B2,'Lookup table'!$A$2:$B$5, 2, FALSE), 0)
慎重声明! Excel的IFERROR函数可以捕获所有类型的错误,不仅仅是#N/A。 它是好是坏? 这取决于你的目标。 如果你想掩盖所有可能的错误,IFERROR Vlookup是一种方法。 但在许多情况下,这可能是一种不明智的技术。
例如,如果你为你的表数据创建了一个命名的范围,并在你的Vlookup公式中拼错了这个名字,IFERROR将捕获一个#NAME? 错误,并将其替换为 "未找到 "或你提供的任何其他文本。 结果,你可能永远不知道你的公式正在提供错误的结果,除非你自己发现这个错字。 在这种情况下,一个更合理的方法是只捕获#N/A错误。为此,在Excel 2013及以上版本中使用IFNA Vlookup公式,在所有Excel版本中使用IF ISNA VLOOKUP。
底线是:在为你的VLOOKUP公式选择伴侣时要非常小心 :)
在VLOOKUP中嵌套IFERROR,总是能找到一些东西
想象一下以下情况:你在一个列表中查找一个特定的值,但没有找到。 你有什么选择呢? 要么得到一个N/A错误,要么显示你自己的信息。 实际上,还有第三个选择--如果你的主要vlookup绊倒了,那么就搜索其他肯定存在的东西
在我们的例子中,让我们为我们的用户创建某种仪表板,向他们显示特定办公室的分机号码。 像这样。
那么,你如何根据D2中的办公室号码从B列提取分机? 用这个常规的Vlookup公式。
=vlookup($d$2,$a$2:$b$7,2,false)
只要你的用户在D2中输入一个有效的号码,它就能很好地工作。 但如果用户输入的号码不存在呢? 在这种情况下,让他们给中央办公室打电话!为此,你把上述公式嵌入到 价值 IFERROR的参数,并将另一个Vlookup放在 value_if_error 争论。
完整的配方有点长,但效果完美。
=IFERROR(VLOOKUP("办公室"&$D$2,$A$2:$B$7,2,FALSE),VLOOKUP("中央办公室",$A$2:$B$7,2,FALSE)
如果找到办公室号码,用户会得到相应的分机号码。
如果找不到办公室号码,就会显示中央办公室的分机。
为了使公式更加紧凑,你可以使用不同的方法。
首先,检查D2中的数字是否存在于查找栏中(请注意,我们设置了 col_index_num VLOOKUP(D2,$A$2:$B$7,1,FALSE)。
如果没有找到指定的办公室号码,那么我们就搜索字符串 "中央办公室",这肯定在查询列表中。 为此,你用IFERROR包住第一个VLOOKUP,并将这整个组合嵌套在另一个VLOOKUP函数中。
=VLOOKUP(IFERROR(VLOOKUP(D2,$A$2:$B$7,1,FALSE), "中央办公室"),$A$2:$B$7,2)
好吧,稍微不同的公式,同样的结果。
但是,你可能会问我,为什么要查找 "中央办公室 "呢? 为什么不在IFERROR中直接提供分机号码呢? 因为分机可能会在未来的某个时刻发生变化。 如果发生这种情况,你只需在源表中更新一次数据,而不必担心更新你的每一个VLOOKUP公式。
如何在Excel中做连续的VLOOKUPs
在你需要执行所谓的 连续的 或 被锁住的 在Excel中的Vlookups取决于先前的查找是否成功或失败,嵌套两个或更多的IFERROR函数来逐一运行你的Vlookups。
iferror(vlookup( ... ), iferror(vlookup( ... ), iferror(vlookup( ... ), "未找到"))该公式的工作逻辑如下。
如果第一个VLOOKUP没有找到任何东西,第一个IFERROR捕捉到一个错误并运行另一个VLOOKUP。 如果第二个VLOOKUP失败,第二个IFERROR捕捉到一个错误并运行第三个VLOOKUP,以此类推。 如果所有的VLOOKUP都失误,最后一个IFERROR返回你的信息。
这个嵌套的IFERROR公式在你需要Vlookup跨越的时候特别有用。 多张 如下面的例子所示。
比方说,你在三个不同的工作表中有三个同质数据的列表(本例中为办公室号码),你想得到某个号码的扩展名。
假设查询值在当前工作表的A2单元格中,而查询范围是3个不同工作表(北、南、西)中的A2:B5,下面的公式就很好用了。
=IFERROR(VLOOKUP(A2,North!$A$2:$B$5,2,FALSE), IFERROR(VLOOKUP(A2,South!$A$2:$B$5,2,FALSE), IFERROR(VLOOKUP(A2,West!$A$2:$B$5,2,FALSE), "未找到" ))
因此,我们的 "链式Vlookups "公式按照我们在公式中嵌套的顺序在三个不同的工作表中进行搜索,并带来它找到的第一个匹配。
这就是在Excel中使用IFERROR与VLOOKUP的方法。 感谢你的阅读,希望下周能在我们的博客上见到你。
可用的下载
Excel IFERROR VLOOKUP公式实例