快捷搜索:  汽车  科技

如何用vba删除重复的表(删除工作表中的重复行)

如何用vba删除重复的表(删除工作表中的重复行)Rows(i).DeleteIf WorksheetFunction.CountIf(Sheet1.Columns(1) Cells(i 1)) > 1 ThenSub t1()t = TimerFor i = 10000 To 1 Step -1

本例介绍删除工作表中的重复行的三种方法,分别用到countif、RemoveDuplicates、字典等方法。

如图,A列有1万行数据,其中有很多重复项,要求删除重复项。

如何用vba删除重复的表(删除工作表中的重复行)(1)

达到的效果如图:

如何用vba删除重复的表(删除工作表中的重复行)(2)

方法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删除重复的表(删除工作表中的重复行)(3)

方法2:

Sub t2()

t = Timer

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

MsgBox Format(Timer - t "程序执行时间为:0.0000000000秒") 64 "时间统计"

End Sub

程序运行时间如图:

如何用vba删除重复的表(删除工作表中的重复行)(4)

方法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删除重复的表(删除工作表中的重复行)(5)

小结:通过以上比较可以看出用后两种方法速度较快,建议如果数据较多的情况下不用循环的方式。

猜您喜欢: