2014-10-06 95 views
0

我有一个包含多个电子表格的Excel表格。在每个电子表格中都有大约1000行的列'firstname'和'lastname'。我记录了一个宏,它显示了'firstname lastname'格式的重复行。在多个Excel表格中查找重复的单元格

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

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

+0

对于那些2007或更高,现有的公式将是与大大更高效COUNTIFS更好()函数这样的Excel版本:'= IF(COUNTIFS(B:B,B2,C: C,C2)-1,“重复”,“不重复”)。不需要担心完整的列引用,因为它只会处理到您的数据范围,而不是'SUMPRODUCT(...)'逐字处理每个单元格范围。不幸的是,您不能简单地将多个工作表引用添加到“Sheet1:Sheet3!B:B”等条件范围。 – Jeeped 2014-10-06 10:54:00

+0

@Jeeped感谢您的COUNTIFS()函数。它更小,更清洁和高效。除了COUNTIFS()之外,是否还有其他功能可以使用,以便从其他工作表中找到重复项。 – Roland 2014-10-06 11:00:56

+0

Excel中没有接受通常称为3D范围引用(即多个工作表上的一个或多个单元格范围)中的条件的本机函数。如果你只有几张工作表来看,我会建议简单地加几个'COUNTIFS(...)'在一起。如果你有超过几个,那么UDF可能是更好的路线。 – Jeeped 2014-10-06 11:19:08

回答

0

你可以欺骗Excel接受3D范围参考作为参数COUNTIFSINDIRECT和阵列处理礼貌SUMPRODUCT包装。随着在Z2要处理的工作表的名称:Z4,那么这将算在整个工作表中重复的姓和名在B列& C.

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

您应该能够纳入这一标准公式写入您的IF()声明重复识别。

请注意INDIRECT被认为是一个挥发性功能,重新计算工作簿中的任何更改。根据数据的范围,您可能会遇到一些计算滞后。

enter image description here

+0

我无法实现您的功能。我没有真正获得IF()语句的一部分。 – Roland 2014-10-06 12:23:25

+0

@Roland - 简单的公式提供了跨多个工作表(在同一列中)的计数。计数为1意味着没有重复项,任何高于重复值的值都将代表重复值。例如'= IF(SUMPRODUCT(COUNTIFS(INDIRECT( “ ' ”&$ Z $ 2:$ Z $ 4“' B:B”),B2,INDIRECT(“ ' ”&$ Z $ 2:$ Z $ 4“'! C:C“),C2)) - 1,”重复“,”不重复“)。 – Jeeped 2014-10-06 12:34:55

+0

嗨@Jeeped,我试着用你的答案。但我想我做错了什么。无论如何,作为解决方法,我复制了一张表中的所有数据,并使用= IF(COUNTIFS(B:B,B2,C:C,C2)-1,“重复”,“无重复”)。不是最好的方式,但仍然。谢谢你的帮助 ! – Roland 2014-10-09 07:43:38

相关问题