首页 > 解决方案 > 复制、删除重复项、粘贴 V

问题描述

我正在尝试复制一个列表,删除重复项并将其粘贴到其他位置,但由于某种原因,它保留了 1 的三个副本中的两个 - 见附件。不知道为什么这样做,任何帮助将不胜感激。

代码和输出

标签: excelvba

解决方案


高级过滤器假定顶部单元格是标题并且不将其视为重复项之一。

要解决此问题,您需要在顶部添加另一行作为标题,然后运行您的代码。如果您愿意,您可以在之后删除此标题单元格。

如果添加标题不是一个选项,您可以使用删除重复项作为单独的步骤。与高级过滤器不同,您可以告诉删除重复项您没有标题。只需将您的代码更改为:

Sub VBARemoveDuplicate()

    Range("A1", Range("A1").End(xlDown)).Select
    Selection.Copy Range("B1")
    Range("B1", Range("B1").End(xlDown)).RemoveDuplicates Columns:=1, Header:=xlNo

End Sub
    

编辑:

另一种选择是删除后端丢失的重复项,如下所示。

Sub VBARemoveDuplicate()
    Range("A1", Range("A1").End(xlDown)).Select
    Selection.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("B1"), Unique:=True
    
    For Each cell In Range("A2", Range("A2").End(xlDown))
        If cell.Value = Range("A1").Value Then
            Range("B1").Delete xlShiftUp
        End If
    Next cell
End Sub

除此之外,您需要将所有内容加载到数组中,然后循环并删除重复项,然后将它们放回工作表中。如果您有一个大型数据集,这可能会很慢。


推荐阅读