删除重复的行,每行长度为40列。该怎么办?

时间:2011-09-08 13:10:12

标签: excel vba excel-vba excel-2003

嗯,这不是我第一次在这里问这些问题,但我无法完成。 我必须删除列中的重复行。说来自

range("A1:A30000") have to delete all the duplicate rows in these columns

我使用了之前由程序员在stackoverflow上给出的问题的解决方案。他们工作得很棒但不是这些时间。最后我有15行的每行,但这些时候每行有40列,没有任何脚本工作。电脑它刚刚挂起,有时需要2小时,这不是我想要的。我使用了Issun,Jon,Reafidy和Doc brown建议的字典方法,即使它们不起作用。我不知道为什么。

所以我想使用高级过滤器,但我无法从vba中删除重复的行。我没有在谷歌上找到它,我看到手册一个带盒但不是vba脚本,即使我发现它不能正常工作。

Range("A1:A5").AdvancedFilter Action:=xlFilterInPlace, Unique:=True

申请该行后我必须做什么。现在删除重复的行。我记得它喜欢复制粘贴,但我不记得代码很好,像

xltypeinvisble:delete

我不记得代码。我记得我现在在谷歌上看到我无法找到它。

任何人都可以告诉我使用高级过滤方法删除重复的条目吗?你认为,那些行每行有40列,这使得我的脚本需要很长时间而且有时会挂断?它可能是什么原因?

任何其他更快的方法(可能是字典一)。我相信人们说字典方法,但我不知道它的工作不正常可能是代码错误或不确定的原因。只是挂断了。所以无法知道为什么,它对我测试的小数据工作得很好。但不是更大的那个。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

我不熟悉您要一次删除所有不可见行的单行命令,但您可以遍历该范围内的行并手动删除它们。

如果这对您来说仍然运行得太慢,您可能需要考虑添加VBA命令以在宏运行时关闭屏幕更新和重新计算。

Sub DeleteDUpes()
    Dim ThisRange As Range
    Dim NewRange As Range

    Set ThisRange = Range("A1:A30000")
    ThisRange.AdvancedFilter Action:=xlFilterInPlace, Unique:=True
    ' Loop through each row from bottom up, deleting rows hidden by filter
    For thisrow = ThisRange.Rows.Count To 1 Step -1
        Set NewRange = ThisRange.Resize(1).Offset(thisrow - 1, 0)
        If NewRange.EntireRow.Hidden Then
            r.EntireRow.Delete
        End If
    Next
End Sub