在底部開始並朝工作最佳。獲取單元值的十列條件COUNTIFS function,同時縮短每個循環檢查1行的行數。
Sub clearDupes()
Dim rw As Long
With Worksheets("Sheet1")
If .AutoFilterMode Then .AutoFilterMode = False
With Intersect(.Range("I:R"), .UsedRange)
.Cells.Interior.Pattern = xlNone
For rw = .Rows.Count To 2 Step -1
With .Resize(rw, .Columns.Count) 'if clear both then remove this
If Application.CountIfs(.Columns(1), .Cells(rw, 1), .Columns(2), .Cells(rw, 2), _
.Columns(3), .Cells(rw, 3), .Columns(4), .Cells(rw, 4), _
.Columns(5), .Cells(rw, 5), .Columns(6), .Cells(rw, 6), _
.Columns(7), .Cells(rw, 7), .Columns(8), .Cells(rw, 8), _
.Columns(9), .Cells(rw, 9), .Columns(10), .Cells(rw, 10)) > 1 Then
'test with this
.Rows(rw).Cells.Interior.Color = vbRed
'clear values with this once it has been debugged
'.Rows(rw).Cells.ClearContents
End If
End With 'if clear both then remove this
Next rw
End With
If .AutoFilterMode Then .AutoFilterMode = False
End With
End Sub
我已經留下了一些代碼,只標記潛在的重複。如果您對結果滿意,請將其更改爲實際清除單元格內容的註釋代碼。
謝謝Jeeped。我正在尋找刪除每次出現多次的單元格。 (不一定是整行)。我只需要留下唯一的單元格值。 (即如果一個單元格重複,那麼在運行代碼後我根本不需要它,甚至不需要一次)。但我喜歡這些標識。我也許可以循環着色每個重複的單元,然後再次循環去除有顏色的單元。我認爲沒有簡單的內置'重複'方法我失蹤 – Harrytyrrah
這聽起來不難。只要刪除正在檢查的範圍的大小。 fwiw,這實際上並不是一個[Range.RemoveDuplicates方法](https://msdn.microsoft.com/en-us/library/office/ff193823.aspx)的工作方式,但我想它更接近CF規則重複。 – Jeeped