如何比较两个不同工作表的列值?

如何比较两个不同工作表的列值?

我有两个不同的工作表(A 和 B),每个工作表中分别包含列PackageNamePackageVersion、和Column BColumn C我想要第三个工作表(C),我可以使用列 B 作为键并显示数据,其中列 C 在工作表 A 和 B 中不一样。

工作表 A 中的示例:

工作表 A

工作表 B 中的示例:

工作表 B

目标:在工作表 C 中显示此内容

工作表 C

答案1

我很惊讶这个问题还没有答案,因为这是一件很容易的事情。

从信息角度来说,您有两个问题需要处理。一个是如果您在工作表 A 上找到工作表 B 项的匹配项。在这种情况下,您需要比较 PackageVersion 值的匹配或不匹配。如果您在工作表 A 上根本找不到工作表 B 项,则只需输出不匹配。除了主显示之外,您还需要填充工作表 C 的 PackageName 列。

要执行后者,只需将以下内容放在单元格 B2 中,然后复制并粘贴足够的单元格以包含工作表 B 上的所有条目。如果它有 1,134 个,则将其复制到工作表 C 上的 1,134 个单元格。没什么有趣的,但这是实现它的最简单的公式化方法。更喜欢没有公式的东西?只需选择工作表 B 上的所有条目,将它们复制到剪贴板,然后将它们粘贴到工作表 C 上的正确位置。

要进行比较,请在工作表 C 的 PackageVersion 列中使用以下公式,根据需要编辑引用以获取精确的详细信息,然后将其复制下来,直到与 PackageName 列匹配为止:

=IFERROR(IF(VLOOKUP(B2,'Worksheet A'!B2:C1135,2,FALSE)=VLOOKUP(B2,'Worksheet B'!B2:C1135,2,FALSE),"Match","NoMatch"),"NoMatch")

在公式中,您可以设置一个IF()测试,比较每个工作表中所需的值。如果成功(是TRUE),则结果为“Match”一词,如果失败,因为它找到了两个工作表,但它们不匹配,则结果为“NoMatch”。如果它在两个工作表的 PackageName 列中都找不到该项目,则它会出错,但IFERROR()看到这种情况的外部会执行与返回错误不同的操作:而是返回“NoMatch”。

它针对每个工作表 A 和 B 上的 B 和 C 列中的 1,134 行数据而编写。当然,根据需要更改地址。

请注意,它会查看其自己的 B 列单元格,以确定每张工作表上要查找的内容。对于 Excel 来说,这可能会慢一点,因为它必须先更新该单元格,然后才能将该值传递给公式。由于您正在查找工作表 B 上的信息,因此您实际上可以直接使用它的 B2:B1135 单元格,这样计算量就会少一些。现在这已经不是什么问题了,但也许应该记住以备将来使用。

此外,如果您有兴趣,还有其他方法可以进行查找。这种方法效果很好,但如果您使用VLOOKUP()而不是 ,有些人会讨厌您INDEX/MATCH。如果使用电子表格的人使用的是更新版本的 Excel,您可以XLOOKUP根据需要使用该函数。后者很容易理解VLOOKUP(),虽然它不能在所有情况下取代其他查找,但在这种情况下它肯定可以。

相关内容