我正在尝试使用A列删除重复记录,我似乎已经一些成功,但我仍然发现重复。希望有人能告诉我如何改进这一点。
由于
Dim i As Integer
Dim value As String
i = 3
Range("A" & i).Select
Do Until IsEmpty(ActiveCell)
Range("A" & i).Select
value = ActiveCell.value
Do Until IsEmpty(ActiveCell)
If ActiveCell.value = value Then
ActiveCell.EntireRow.Delete
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
i = i + 1
Loop
答案 0 :(得分:3)
避免使用选择和活动单元格。
使用向后循环的For循环。
Dim i As Long
Dim ws As Worksheet
Set ws = ActiveSheet 'This can be changed to a specific sheet: Worksheets("sheetName")
With ws
For i = .Cells(.Rows.Count, 1).End(xlUp).Row To 3 Step -1
If .Cells(i, 1).value = .Cells(i - 1, 1).value Then
.Rows(i).Delete
End If
Next i
End With
这只会将值与上面的值进行比较。如果要删除所有重复项,请使用@ Petay87答案。
答案 1 :(得分:1)
我相信如果要删除所有A列的重复项并且没有标题行,以下内容将对您有用:
ActiveSheet.Range("A:A").RemoveDuplicates Columns:=1, Header:=xlNo
答案 2 :(得分:1)
删除行时,需要反向循环。请尝试以下代码,
Sub removeDupes()
Dim i As Long
For i = 3 To Cells(Rows.Count, 1).End(xlUp).Row
If Range("A" & i).Value = Range("A" & i + 1).Value Then
Range("A" & i + 1).ClearContents
End If
Next i
For i = Cells(Rows.Count, 1).End(xlUp).Row To 3 Step -1
If IsEmpty(Range("A" & i)) Then
Range("A" & i).EntireRow.Delete
End If
Next i
End Sub