如何突出显示2列或更多列中具有重复值的行

时间:2017-09-08 05:09:22

标签: excel excel-formula duplicates

我想弄清楚如何做到这一点。我有一张有大约44列和大约64,000行的纸张。这些列具有不同的客户数据点,例如姓名,出生日期,电话号码和电子邮件(这些是我目的最相关的列)。我想知道如何排序或突出显示至少三个列数据点匹配的行,以显示客户的重复记录。为了清楚地解释,我只想根据至少3列(名称列(常量)和电话号码或DOB或电子邮件)突出显示重复的行。)

例如:

enter image description here

在上文中,John Smith仅基于DOB进行匹配。 Lisa基于电子邮件的冬天,以及基于DOB和电子邮件的Stephanie wright。

现在我正在查看它,我会将名字和姓氏组合成一列,所以它只需要匹配2个或更多列而不是3个。

我发布了超级用户,我得到的只是countifs,这似乎是一个开始,但我似乎需要合并“和,或”逻辑?

非常感谢任何有关特定公式的帮助!

2 个答案:

答案 0 :(得分:1)

您应该根据名称对数据进行排序。然后创建一个额外的辅助列,二进制表示它是否重复。

您可以在F2中使用公式,如:

=IF(AND($A2=$A1,$B2=$B1,OR($C2=$C1,$D2=$D1,$E2=$E1)),1,0)

根据名字和姓名以及至少一个其他列,这将为F列中的1提供与上述行重复的内容。这不是一个完全理想的情况,因为它并不总是表现出重复。例如:

如果有3个条目具有相同的名称,并且第一个条目已填充所有其他字段。第二个条目只有名称和电子邮件。并被认为是第一个条目的匹配。第三个条目只有名称和DOB,并且不被认为与第二个条目匹配,因为只有名称匹配。

为了避免这种情况,你需要使用INDEX(MATCH()),但是你的电脑负担很安静,特别是如果你要在64K条目上递归使用它。

答案 1 :(得分:1)

为了进行比较,这将是数组类型的方法,但正如@Luuklag正确地说的那样,64K行数据可能会很慢,尽管它确实提供了完整的结果

=SUMPRODUCT(($A2<>"")*($A2=$A$2:$A$10)*($B2=$B$2:B$10)*SIGN((($C2=$C$2:$C$10)+($D2=$D$2:$D$10)+($E2=$E$2:$E$10))))>1

因此,这将测试所有行,以查看是否有多个行与姓氏,名字以及DOB,电话和电子邮件中的当前行一致,假设您的数据位于前五列并且省略任何行姓氏为空的行。调整范围以适应。

这在64K行上太慢了。更好的是使用SUMIFS

=(COUNTIFS($A$2:$A$64000,$A2,$B$2:$B$64000,$B2,$C$2:$C$64000,$C2)
+COUNTIFS($A$2:$A$64000,$A2,$B$2:$B$64000,$B2,$D$2:$D$64000,$D2)
+COUNTIFS($A$2:$A$64000,$A2,$B$2:$B$64000,$B2,$E$2:$E$64000,$E2))>3