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

我目前正在尝试创建一个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 - 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