Excel IFERROR & VLOOKUP - 陷阱#N/A和其他错误

  • Share This
Michael Brown

在本教程中,我们将研究如何使用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公式实例

    Michael Brown is a dedicated technology enthusiast with a passion for simplifying complex processes using software tools. With more than a decade of experience in the tech industry, he has honed his skills in Microsoft Excel and Outlook, as well as Google Sheets and Docs. Michael's blog is dedicated to sharing his knowledge and expertise with others, providing easy-to-follow tips and tutorials for improving productivity and efficiency. Whether you're a seasoned professional or a beginner, Michael's blog offers valuable insights and practical advice for getting the most out of these essential software tools.