Table of contents
本教程展示了如何在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个列以找出差异,你可以这样做。
- 写出核心公式,在列表2($C$2:$C$9)中搜索列表1(A2)中的第一个值。
vlookup(a2, $c$2:$c$9, 1, false)
- 在ISNA函数中嵌入上述公式,以检查VLOOKUP的输出是否有#N/A错误。 如果有错误,ISNA产生TRUE,否则产生FALSE。
isna(vlookup(a2, $c$2:$c$9, 1, false))
See_also: Excel中的TEXTSPLIT函数:按分隔符分割文本字符串 - 使用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文件)。