VBA實例教程:刪除工作表中的重複行

本例介紹刪除工作表中的重複行的三種方法,分別用到countif、RemoveDuplicates、字典等方法。

如圖,A列有1萬行數據,其中有很多重複項,要求刪除重複項。

VBA實例教程:刪除工作表中的重複行


達到的效果如圖:

VBA實例教程:刪除工作表中的重複行


方法1:

Sub t1()

t = Timer

For i = 10000 To 1 Step -1

If WorksheetFunction.CountIf(Sheet1.Columns(1), Cells(i, 1)) > 1 Then

Rows(i).Delete

End If

Next

MsgBox Format(Timer - t, "程序執行時間為:0.000000秒"), 64, "時間統計"

End Sub

運行時間如圖:

VBA實例教程:刪除工作表中的重複行


方法2:

Sub t2()

t = Timer

Range("a1:a10000").RemoveDuplicates Columns:=1, Header:=xlNo

MsgBox Format(Timer - t, "程序執行時間為:0.0000000000秒"), 64, "時間統計"

End Sub

程序運行時間如圖:

VBA實例教程:刪除工作表中的重複行


方法3:

Sub t3()

t = Timer

Dim d, arr

Set d = CreateObject("Scripting.Dictionary")

arr = Range("a1:a10000")

For i = 1 To UBound(arr)

d(arr(i, 1)) = ""

Next

[a1].Resize(d.Count, 1) = Application.Transpose(d.keys)

MsgBox Format(Timer - t, "程序執行時間為:0.00000000000000秒"), 64, "時間統計"

End Sub

程序運行時間如圖:

VBA實例教程:刪除工作表中的重複行


小結:通過以上比較可以看出用後兩種方法速度較快,建議如果數據較多的情況下不用循環的方式。


分享到:


相關文章: