在Excel中删除重复项太慢了

我有很多重复的大型工作表。 重复在列E,我不得不删除列L中最低的数字。我使用这个代码:

Sub Duplicados() Dim i, lr Application.ScreenUpdating = False Application.EnableEvents = False ActiveSheet.UsedRange.Sort Key1:=Range("E2"), Order1:=xlAscending, Key2:=Range("L2") _ , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1 lr = Cells(Rows.Count, "L").End(xlUp).Row For i = lr - 1 To 1 Step -1 If Cells(i, "E").Value = Cells(i + 1, "E") Then Rows(i).EntireRow.Delete End If Next i Application.ScreenUpdating = True Application.EnableEvents = True End Sub 

然而,这太慢了,我想知道是否有更好的方法来做到这一点。

你的代码需要这么长时间的一个原因是它一次删除一行。 为了加速当前结构的进程,您可以做的一件事是首先确定需要删除的所有行,然后一次删除所有行。 请参阅以下示例以使用Union方法执行此操作的方法:

 Dim rr As Range Dim i As Long Dim lr As Long ActiveSheet.UsedRange.Sort Key1:=Range("E2"), Order1:=xlAscending, Key2:=Range("L2") _ , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1 lr = Cells(Rows.Count, "L").End(xlUp).Row For i = lr - 1 To 1 Step -1 If Cells(i, "E") = Cells(i + 1, "E") Then If rr Is Nothing Then Set rr = Cells(i, 1) Else: Set rr = Union(rr, Cells(i, 1)) End If End If Next i rr.EntireRow.Delete