我有两个不同的工作表(A 和 B),每个工作表中分别包含列PackageName
和PackageVersion
、和Column B
。Column C
我想要第三个工作表(C),我可以使用列 B 作为键并显示数据,其中列 C 在工作表 A 和 B 中不一样。
工作表 A 中的示例:
工作表 B 中的示例:
目标:在工作表 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()
,虽然它不能在所有情况下取代其他查找,但在这种情况下它肯定可以。