如何在Excel中使用VLOOKUP对两列进行比较

  • Share This
Michael Brown

本教程展示了如何在Excel中使用VLOOKUP公式来比较两列,以返回共同的值(匹配)或找到缺失的数据(差异)。

当你在两个不同的列表中拥有数据时,你可能经常需要对它们进行比较,看看其中一个列表中缺少什么信息,或者两个列表中都有什么数据。 比较可以通过许多不同的方式进行--使用哪种方法取决于你到底想从中得到什么。

    如何在Excel中使用VLOOKUP对两列进行比较

    当你有两列数据,想找出一个列表中的哪些数据点存在于另一个列表中,你可以使用VLOOKUP函数来比较列表中的共同值。

    要建立一个基本形式的VLOOKUP公式,这是你需要做的。

    • 对于 查找_值 (第1个参数),使用列表1中最上面的单元格。
    • 对于 表_数组 (第二个参数),提供整个列表2。
    • 对于 col_index_num (第三个参数),使用1,因为数组中只有一列。
    • 对于 范围查询 (第4个参数),设置为FALSE - 完全匹配。

    假设你在A列(名单1)有参赛者的名字,在B列(名单2)有通过资格赛的人的名字。 你想比较这两份名单,以确定A组的哪些参赛者进入了主要赛事。 要做到这一点,请使用以下公式。

    =vlookup(a2, $c$2:$c$9, 1, false)

    该公式进入单元格E2,然后通过列表1中的项目拖动它,拖动的单元格数量与列表1中的项目数量相同。

    请注意 表_数组 被锁定为绝对引用($C$2:$C$9),这样当你把公式复制到下面的单元格时,它就保持不变。

    正如你所看到的,合格运动员的名字显示在E栏。对于其余的参与者,出现了#N/A的错误,表明他们的名字在列表2中没有。

    伪装#N/A错误

    上面讨论的VLOOKUP公式完美地实现了它的主要目标--返回常用值并识别缺失的数据点。 然而,它提供了一堆#N/A错误,这可能使没有经验的用户感到困惑,使他们认为公式出了问题。

    要用以下方法取代错误 空白单元格 ,以这种方式将VLOOKUP与IFNA或IFERROR函数结合使用。

    =ifna(vlookup(a2, $c$2:$c$9, 1, false), " ")

    我们改进后的公式会返回一个空字符串(""),而不是#N/A,你也可以返回你的 自定义文本 例如,"不在列表2中"、"不存在 "或 "不可用"。 例如。

    =IFNA(VLOOKUP(A2, $C$2:$C$9, 1, FALSE), "不在列表2")

    这就是在Excel中比较两列的基本VLOOKUP公式。 根据你的特定任务,它可以被修改,如进一步的例子中所示。

    用VLOOKUP比较不同Excel表中的两列数据

    在现实生活中,你需要比较的列并不总是在同一张纸上。 在一个小数据集中,你可以尝试通过并排查看两张纸来手动发现差异。

    要在另一个工作表或工作簿中搜索公式,你必须使用外部参考。 最好的做法是在主工作表中开始输入公式,然后切换到另一个工作表,用鼠标选择列表--适当的范围参考会自动添加到公式中。

    假设名单1在A栏中,在 第1张 而名单2在A栏中的 第二张 ,你可以使用这个公式比较两列并找到匹配的内容。

    =IFNA(VLOOKUP(A2, Sheet2! $A$2:$A$9, 1, FALSE), "")

    欲了解更多信息,请参见。

    • 从另一个工作表的VLOOKUP
    • 来自不同工作簿的VLOOKUP

    比较两列并返回共同值(匹配)。

    在前面的例子中,我们讨论了最简单形式的VLOOKUP公式。

    =ifna(vlookup(a2, $c$2:$c$9, 1, false), " ")

    该公式的结果是两列中都存在的数值的列表,并以空白单元格代替第二列中没有的数值。

    要想得到一个没有空隙的普通值的列表,只需在结果列中添加自动过滤,并过滤掉空白。

    在支持动态数组的Excel for Microsoft 365和Excel 2021中,你可以利用FILTER函数来动态地筛选出空白。 为此,利用IFNA VLOOKUP公式作为FILTER的标准。

    =filter(a2:a14, ifna(vlookup(a2:a14, c2:c9, 1, false), "" )"" )

    请注意,在这种情况下,我们提供整个列表1(A2:A14)给 查找_值 该函数将每个查询值与列表2(C2:C9)进行比较,并返回一个匹配数组和代表缺失值的#N/A错误。 IFNA函数将错误替换为空字符串,并将结果提供给FILTER函数,后者过滤掉空白(""),并输出一个匹配数组作为最终结果。

    另外,你可以使用ISNA函数来检查VLOOKUP的结果,并过滤评估为FALSE的项目,即除#N/A错误以外的值。

    =filter(a2:a14, isna(vlookup(a2:a14, c2:c9, 1, false))=false)

    同样的结果可以通过XLOOKUP函数实现,这使得公式更加简单。 由于XLOOKUP能够在内部处理#N/A错误(可选 if_not_found 参数),我们可以不使用IFNA或ISNA的包装。

    =filter(a2:a14, xlookup(a2:a14, c2:c9, c2:c9,"" )"" )

    比较两栏,找出缺失值(差异)。

    要在Excel中比较2个列以找出差异,你可以这样做。

    1. 写出核心公式,在列表2($C$2:$C$9)中搜索列表1(A2)中的第一个值。

      vlookup(a2, $c$2:$c$9, 1, false)

    2. 在ISNA函数中嵌入上述公式,以检查VLOOKUP的输出是否有#N/A错误。 如果有错误,ISNA产生TRUE,否则产生FALSE。

      isna(vlookup(a2, $c$2:$c$9, 1, false))

    3. 使用ISNA VLOOKUP公式进行IF函数的逻辑测试。 如果测试结果为TRUE(#N/A错误),则返回同一行中列表1中的一个值。 如果测试结果为FALSE(在列表2中找到了一个匹配值),则返回一个空字符串。

    完整的公式有这样的形式。

    =if(isna(vlookup(a2, $c$2:$c$9, 1, false)), a2, " ")

    为了摆脱空白,应用Excel的过滤器,如上例所示。

    在Excel 365和Excel 2021中,你可以对结果列表进行动态过滤。 为此,只需将ISNA VLOOKUP公式放入 包括 参数的FILTER函数。

    =filter(a2:a14, isna(vlookup(a2:a14, c2:c9, 1, false))

    另一种方法是使用XLOOKUP作为标准--该函数对缺失的数据点返回空字符串(""),你过滤列表1中XLOOKUP返回空字符串(="")的值。

    =filter(a2:a14, xlookup(a2:a14, c2:c9, c2:c9,"")="")

    用VLOOKUP公式识别两列之间的匹配和差异

    如果你想在第一个列表中添加文本标签,说明哪些值在第二个列表中可用,哪些不可用,请将VLOOKUP公式与IF和ISNA/ISERROR函数一起使用。

    例如,为了识别同时出现在A和D列的名字和只出现在A列的名字,公式为:。

    =IF(ISNA(VLOOKUP(A2, $D$2:$D$9, 1, FALSE)), "不合格", "合格")

    在这里,ISNA函数捕获了由VLOOKUP产生的#N/A错误,并将该中间结果传递给IF函数,使其对错误返回指定的文本,对成功查询返回另一个文本。

    在这个例子中,我们使用了 "不合格"/"合格 "的标签,这适合我们的样本数据集。 你可以用 "不在名单2"/"在名单2"、"不可用"/"可用 "或任何你认为合适的其他标签来替代它们。

    这个公式最好是插入到与列表1相邻的一列中,并按列表中的项目数复制到多个单元格中。

    还有一种方法是使用MATCH函数来识别2列中的匹配和差异。

    =IF(ISNA(MATCH(A2, $D$2:$D$9, 0)), "不在列表2", "在列表2")

    比较两列并从第三列返回一个值

    当处理包含相关数据的表时,你有时可能需要比较两个不同表中的两列,并从另一列返回一个匹配的值。 事实上,这是VLOOKUP函数的主要用途,也是它的设计目的。

    例如,要比较下面两个表格中A列和D列的名字,并从E列返回一个时间,其公式为:。

    =vlookup(a3, $d$3:$e$10, 2, false)

    要隐藏#N/A错误,请使用成熟的解决方案--IFNA功能。

    =ifna(vlookup(a3, $d$3:$e$10, 2, false), " ")

    对于缺失的数据点,你可以返回任何你想要的文本,而不是空白,只要在最后一个参数中输入即可。 例如。

    =IFNA(VLOOKUP(A3, $D$3:$E$10, 2, FALSE), "不可用")

    除了VLOOKUP,还可以用其他一些查找函数来完成任务。

    就个人而言,我会依靠一个更灵活的INDEX MATCH公式。

    =ifna(index($e$3:$e$10, match(a3, $d$3:$d$10, 0)), " ")

    或者使用VLOOKUP的现代继承者--XLOOKUP函数,在Excel 365和Excel 2021中可用。

    =xlookup(a3, $d$3:$d$10, $e$3:$e$10, "" )

    要获得A组合格参与者的名字和他们的结果,只需过滤掉B列的空白单元格。

    =filter(a3:b15, b3:b15"")

    比较工具

    如果你经常在Excel中进行文件或数据比较,我们的终极套件中包含的这些智能工具可以极大地节省你的时间!

    表格比较 - 快速查找任何两个数据集,如列、列表或表格中的重复(匹配)和唯一值(差异)。

    比较两张工作表 - 找到并强调两张工作表之间的差异。

    比较多张表 - 一次性找到并突出显示多张表的差异。

    供下载的实践工作手册

    在Excel中比较列的VLOOKUP--例子(.xlsx文件)。

    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.