在底部开始并朝工作最佳。获取单元值的十列条件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