Excel 当单个列中存在重复条目时,如何删除重复行
我目前正在尝试创建一个Excel VBA代码,当在单个列中发现重复项时,该代码将删除整行。我已经创建了代码,但由于某些原因,每次运行Excel时都会崩溃。有人能帮我吗Excel 当单个列中存在重复条目时,如何删除重复行,excel,vba,Excel,Vba,我目前正在尝试创建一个Excel VBA代码,当在单个列中发现重复项时,该代码将删除整行。我已经创建了代码,但由于某些原因,每次运行Excel时都会崩溃。有人能帮我吗 Sub Test() For i = 1 To 25 a = Cells(i, 1).Value b = Cells(i + 1, 1).Value If a = b Then Rows(i + 1).Delete i = i
Sub Test()
For i = 1 To 25
a = Cells(i, 1).Value
b = Cells(i + 1, 1).Value
If a = b Then
Rows(i + 1).Delete
i = i - 1
End If
Next i
End Sub
以下两种情况之一可能会导致此代码出现问题: 1-如果A列中有错误值(即
#NA
),如果A=b,比较将失败,代码将停止,并出现错误代码类型不匹配
2-代码可以进入无限循环(这就是为什么您认为Excel“崩溃”),因为当您到达范围的末尾时,您只会得到空行,因此比较a=b
总是成功(empty=empty
),因此您会不断删除行并循环
因此,正确的方法是应用通常的方法:在删除时从下到上循环
Sub Test()
Dim i as Long
For i = Cells(Rows.Count, "A").End(xlUp).Row To 2 step -1
If Cells(i, 1).Value = Cells(i - 1, 1).Value Then Rows(i).Delete
Next i
End Sub
最后,请注意,此代码不会删除任何重复项,而只删除位于彼此下方的重复项。从最初的代码来看,这似乎是您的目标。两件事之一可能会使此代码出现问题:
1-如果A列中有错误值(即#NA
),如果A=b,比较将失败,代码将停止,并出现错误代码类型不匹配
2-代码可以进入无限循环(这就是为什么您认为Excel“崩溃”),因为当您到达范围的末尾时,您只会得到空行,因此比较a=b
总是成功(empty=empty
),因此您会不断删除行并循环
因此,正确的方法是应用通常的方法:在删除时从下到上循环
Sub Test()
Dim i as Long
For i = Cells(Rows.Count, "A").End(xlUp).Row To 2 step -1
If Cells(i, 1).Value = Cells(i - 1, 1).Value Then Rows(i).Delete
Next i
End Sub
最后,请注意,此代码不会删除任何重复项,而只删除位于彼此下方的重复项。通过查看初始代码,这似乎是您的目标。使用下面的代码,您可以删除重复的值:
ActiveSheet.Range("A:A").RemoveDuplicates Columns:=Array(1), Header:=xlYes
使用以下代码可以删除重复的值:
ActiveSheet.Range("A:A").RemoveDuplicates Columns:=Array(1), Header:=xlYes