本例介绍删除工作表中的重复行的三种方法,分别用到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 的文章