曾在我的小測試:
Sub DeleteRows()
Dim rng As Range, rw As Range, k, dict, x As Long
Dim rngDelete As Range
Set dict = CreateObject("scripting.dictionary")
Set rng = ActiveSheet.Range("A1").CurrentRegion
'first pass - find all "duplicate" id's
For x = 2 To rng.Rows.Count
Set rw = rng.Rows(x)
k = rw.Cells(1) & "~" & rw.Cells(2)
If Application.CountIfs(rng.Columns(1), rw.Cells(1), _
rng.Columns(3), rw.Cells(3)) > 1 Then
rw.Interior.Color = vbYellow '<<< for QC
dict.Add k, True '<<remember this combination
End If
Next x
'second pass - flag rows for deletion
For x = 2 To rng.Rows.Count
Set rw = rng.Rows(x)
k = rw.Cells(1) & "~" & rw.Cells(2)
If dict.exists(k) Then BuildRange rngDelete, rw
Next x
If Not rngDelete Is Nothing Then rngDelete.Delete
End Sub
Sub BuildRange(ByRef rngTot As Range, ByRef rngAdd As Range)
If Not rngTot Is Nothing Then
Set rngTot = Application.Union(rngTot, rngAdd)
Else
Set rngTot = rngAdd
End If
End Sub
您還需要你的循環改變向後工作,即'For I = 10 To 1 Step -1'。 – YowE3K
您的實際數據集中是否有不同的跟蹤號碼,或者ColA中的所有值是否相同? –
將會有不同的跟蹤號碼乘以相同的行ID 1,2,3,4,5,我想同時刪除具有700個不同跟蹤號碼的乘法行。 –