【问题标题】:Find duplicate cells in multiple excel sheets在多个 Excel 工作表中查找重复的单元格
【发布时间】:2014-11-30 14:27:54
【问题描述】:

我有一个包含多个电子表格的 Excel 工作表。每个电子表格中有大约 1000 行的“名字”和“姓氏”列。我录制了一个宏,它显示了格式为“firstname lastname”的重复行。

=IF(SUMPRODUCT(($B$2:$B$1000=B2)*1,($C$2:$C$1000=C2)*1)>1,"Duplicates","No duplicates")

上面的公式可以在一张表中找到重复的行。如何调整公式,使其也可以与其他表格匹配。公式或 VBA 也可以。

【问题讨论】:

  • 对于 2007 或更高版本的 Excel,您现有的公式会更好地使用效率更高的 COUNTIFS() 函数,如下所示:=IF(COUNTIFS(B:B, B2, C:C, C2)-1, "Duplicates", "No duplicates")。无需担心完整的列引用,因为它只会处理您的数据范围,而不是 SUMPRODUCT(...) 逐字处理每个单元格范围引用。不幸的是,您不能简单地将多个工作表引用添加到Sheet1:Sheet3!B:B 等条件范围。
  • @Jeeped 感谢您提供 COUNTIFS() 函数。它更小、更清洁、更高效。除了 COUNTIFS() 之外,我还可以使用任何其他函数,以便也可以从另一张表中找到重复项。
  • Excel 中没有本机函数可以接受通常称为 3D 范围参考(即多个工作表上的一个或多个单元格的范围)中的标准。如果您只有几个工作表要查看,我建议您简单地将几个 COUNTIFS(...) 添加在一起。如果您有多个,那么 UDF 可能是更好的途径。
  • @Jeeped 谢谢你的帮助。

标签: excel duplicates rows


【解决方案1】:

您可以欺骗 Excel 接受 3D 范围引用作为 COUNTIFS 的参数,并使用 INDIRECTSUMPRODUCT 包装器提供的数组处理。使用要在 Z2:Z4 中处理的工作表的名称,这将计算工作表中 B 和 C 列中名字和姓氏的重复次数。

=SUMPRODUCT(COUNTIFS(INDIRECT("'"&$Z$2:$Z$4&"'!B:B"),B2,INDIRECT("'"&$Z$2:$Z$4&"'!C:C"),C2))

您应该能够将该标准公式合并到您的 IF() 语句中以进行重复识别。

请注意INDIRECT 被认为是一个volatile 函数,它会随着工作簿中的任何更改而重新计算。根据您的数据范围,您可能会遇到一些计算滞后。

      

【讨论】:

  • 我无法实现你的功能。我并没有真正得到 IF() 语句部分。
  • @Roland - 简单的公式提供跨多个工作表(在同一列中)的计数。计数为 1 表示没有重复值,任何高于该值的值都代表重复值。例如=IF(SUMPRODUCT(COUNTIFS(INDIRECT("'"&$Z$2:$Z$4&"'!B:B"),B2,INDIRECT("'"&$Z$2:$Z$4&"'!C:C"),C2))-1, "Duplicates", "No duplicates").
  • 嗨@Jeeped,我尝试使用您的答案。但我想我做错了什么。无论如何,作为一种解决方法,我将所有数据复制到一张纸上并使用 =IF(COUNTIFS(B:B, B2, C:C, C2)-1, "Duplicates", "No duplicates")。不是最好的方法,但仍然。感谢您的帮助!
猜你喜欢
  • 2014-08-28
  • 1970-01-01
  • 1970-01-01
  • 2020-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-22
相关资源
最近更新 更多