VBA脚本使用特殊条件查找重复项

我有一个数据库有很多logging,每个logging有5个字段,即发票号码,date,金额,发货号码和数量。

我如何编写一个search重复的VBA脚本。 search重复的方法是,如果logging的任何三个字段匹配,则logging将以单独的颜色突出显示。 假设匹配的字段没有被指定,它们可以是任何三个字段。

例如,如果发票号,发货号和数量在某些logging中匹配,则显示为重复项和高亮显示。 同样,如果INVOICE NUMBER,QUANTITY和DATE匹配一些logging,那么它们也被列为重复项。

因此,在数据库中,如果有三个匹配项,那么在五个字段中,它们被列为重复项,并以不同的颜色突出显示。

任何人都可以请帮我写一个VBA脚本,这样做?

有没有一个简单的方法来做到这一点。 有五个领域,有10个可能的方法可以评估这三个领域。 所以,你可以创build一个基本上遍历所有列的macros,寻找重复的东西,但是这不是很容易。

过去我做过这样的事情,而是依靠一个单元格来完成这项工作。 我使用SUMPRODUCT函数来查找值。 这是你看起来的样子。

=SUMPRODUCT((A$2:A2=A3)*(B$2:B2=B3)*(C$2:C2=C3)) + SUMPRODUCT((A$2:A2=A3)*(B$2:B2=B3)*(D$2:D2=D3)) + + SUMPRODUCT((A$2:A2=A3)*(B$2:B2=B3)*(E$2:E2=E3)) + SUMPRODUCT((A$2:A2=A3)*(C$2:C2=C3)*(D$2:D2=D3)) + SUMPRODUCT((A$2:A2=A3)*(C$2:C2=C3)*(E$2:E2=E3)) + SUMPRODUCT((A$2:A2=A3)*(D$2:D2=D3)*(E$2:E2=E3)) + SUMPRODUCT((B$2:B2=B3)*(C$2:C2=C3)*(D$2:D2=D3)) + SUMPRODUCT((B$2:B2=B3)*(C$2:C2=C3)*(E$2:E2=E3)) + SUMPRODUCT((B$2:B2=B3)*(D$2:D2=D3)*(E$2:E2=E3)) + SUMPRODUCT((C$2:C2=C3)*(D$2:D2=D3)*(E$2:E2=E3)) 

请注意,这假定您的5个字段在列A到E,并且永远不会改变。 上面的公式也被devise成放在你想要的任何列的第2行。然后只需要复制公式就可以自动调整当前行的值。 第2行不需要它,因为这应该是你的第一个logging(假设有当然标题)。

哦,因为我没有提到它,如果这个公式返回1,那么表示重复的数据。 0表示它是唯一的(到目前为止)。

这里有一些psuedocode来协助创build一个macros。

 For each row from 2 to currentRow - 1 Dim numMatches as integer numMatches = 0 if activeSheet.Range("A" & row) = activeSheet.Range("A" & currentRow) then nuMatches = numMatches + 1 Endif 'do the above if statement for each compare if numMatches >= 3 then 'format the currentRow to indicate duplicate endif Next Row