本例介紹刪除工作表中的重複行的三種方法,分別用到countif、RemoveDuplicates、字典等方法。
如圖,A列有1萬行數據,其中有很多重複項,要求刪除重複項。
達到的效果如圖:
方法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
運行時間如圖:
方法2:
Sub t2()
t = Timer
Range("a1:a10000").RemoveDuplicates Columns:=1, Header:=xlNo
MsgBox Format(Timer - t, "程序執行時間為:0.0000000000秒"), 64, "時間統計"
End Sub
程序運行時間如圖:
方法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 的文章