|
发表于 2014-3-20 17:43
|
显示全部楼层
本楼为最佳答案
- Sub 删除完全相同行()
- Dim arr, rng As Range, d, i&, p$, irow&
- Dim s As Single
- s = Timer
- Application.ScreenUpdating = False
- Set d = CreateObject("scripting.dictionary")
- arr = ActiveSheet.UsedRange
- irow = ActiveSheet.UsedRange.Row
- If IsArray(arr) = False Then Exit Sub
- For i = 1 To UBound(arr)
- For j = 1 To UBound(arr, 2)
- p = p & "," & arr(i, j)
- Next
- If Not d.exists(p) Then
- d(p) = i
- Else
- If rng Is Nothing Then Set rng = Cells(i + irow - 1, 1) Else Set rng = Union(rng, Cells(i + irow - 1, 1))
- End If
- p = ""
- Next
- If Not rng Is Nothing Then rng.EntireRow.Delete
- Application.ScreenUpdating = True
- 'MsgBox "操作完成!", vbInformation + vbOKOnly, "提示"
- MsgBox "耗时" & Format(Timer - s, "0.00秒"), , "提示"
- End Sub
复制代码 你再试试,我这里运行1.34秒 |
评分
-
查看全部评分
|