2016-02-13 254 views
1

我需要在VBA中標識重複的行(注意:重複的行意味着在考慮的所有列上與原始行相同的值)。我發現有幾個程序基於某個列來完成此操作,並且我知道使用Range.RemoveDuplicates Method (Excel)可以快速找到並刪除重複的行,但這對識別沒有幫助。假設以下的行給出:使用VBA查找重複行

EE 10 12 13 
jk 56 AA 00 
BB 32 af 12 
21 CC CC fg 
as DD 89 fg 
AA 67 45 vb 
fh 56 df kl 
cv fh CC 34 
af xv DD 67 
EE 10 12 13 

在這個例子中,第一和最後一行將被識別(無論是在函數返回或標記在某些類型的彩色的)。請注意,我不想刪除它們,而是將它們保存在新的工作表中,但這不是問題。問題只是鑑定。

用我的真實數據我有大約30,000行,所以性能也很重要。

+0

您想僅識別列A中的重複項還是來自其他所有列? – newguy

+3

帶公式的條件格式就足夠了,是否有任何特定的理由通過VBA來完成? –

+0

沒有特別的原因,但我需要自動化的東西。在這方面,Excel並沒有讓你走得太遠:) – user3032689

回答

1

也許是這樣的:

Sub highlight() 

    firstRow = 2 
    lastrow = 30 

    For j = firstRow To lastrow 
     If Range(Cells(j, 1), Cells(j, 4)).Interior.Color = 255 Then 
      'already highlighted, found to be duplicate. Skip. 
     For i = firstRow + 1 To lastrow 
      If Range(Cells(i, 1), Cells(i, 4)).Interior.Color = 255 Then 
       'already highlighted, found to be duplicate. Skip. 
      ElseIf Cells(i, 1) & Cells(i, 2) & Cells(i, 3) & Cells(i, 4) _ 
       = Cells(j, 1) & Cells(j, 2) & Cells(j, 3) & Cells(j, 4) Then 
       'Dupe found, highlight as red 
       Range(Cells(i, 1), Cells(i, 4)).Interior.Color = 255 
      End If 
     Next 
    Next 

End Sub 

你需要爲這個解決方案嵌套循環。跳過已經被發現是愚蠢的物品很重要,我使用突出顯示。

未經測試,但應該接近。

+0

我剛剛意識到這個問題在2013年被問到。@tyop停止提出舊的東西。 –