|
原帖由 AVEL 于 2009-8-18 23:24 发表
Sub test1()
T = Timer
Dim C As Range, a, i%
Set d = CreateObject("Scripting.Dictionary")
i = Sheet1.[A65536].End(3).Row
For Each C In Range("A1:A" & i)
If C.Value "" ...
字典肯定是最快的
Sub method_dic()
Application.ScreenUpdating = False
t = Timer
Dim d, a, arr()
Set d = CreateObject("scripting.dictionary")
a = [a65536].End(xlUp).Row
arr = Range("a1:a" & a)
For i = 1 To a
d(arr(i, 1)) = 1 ‘这句最关键,用d(key)=1
比 d.add key, item 和 d(key)=”” 都要快很多
Next i
tmp = d.keys
a = UBound(tmp) + 1
Range("m1:m" & a) = WorksheetFunction.Transpose(tmp)
t1 = (Timer - t) * 1000
[J11] = "Total:" & t1 & "milliseconds"
MsgBox "Total:" & t1 & "milliseconds"
Application.ScreenUpdating = True
End Sub
方法1:countif函数 | 方法2:高级筛选 | 方法3:排序后筛选 | 方法4:数组循环 | 方法5:引用collection对象 | 方法6-字典 | | | | | | | 用时:3894.531毫秒 | 用时:3652.344毫秒 | 用时:113.2813毫秒 | 用时:4394.531毫秒 | 用时:359.375毫秒 | 用时:35.15625毫秒 | 用时:10539.06毫秒 | 用时:66.40625毫秒 | 用时:230.4688毫秒 | 用时:35.15625毫秒 | 用时:19.53125毫秒 | 用时:15.625毫秒 | 用时:4664.063毫秒 | 用时:3480.469毫秒 | 用时:113.2813毫秒 | 用时:4218.75毫秒 | 用时:312.5毫秒 | 用时:31.25毫秒 |
[ 本帖最后由 ctmm99 于 2011-5-20 03:04 编辑 ] |
|