其中以下实例可以修改一下,大大提升效率(相差10倍以上) 原代码: Sub usage5() '原代码 Dim dic As Object, i As Long, arr, aa aa = Timer Set dic = CreateObject("Scripting.Dictionary") For i = 1 To 100000 dic.Add i & IIf(Abs(i Mod 6 - 3) = 2, "@", ""), "" Next arr = WorksheetFunction.Transpose(Filter(dic.keys, "@")) [a1].Resize(UBound(arr), 1) = arr [a:a].Replace "@", "" Set dic = Nothing MsgBox "程序共运行了" & Format(Timer - aa, "0.00") & "秒" End Sub 修改后的代码: Sub usage55() '新代码 Dim dic As Object, i As Long, arr, j, aa aa = Timer Set dic = CreateObject("Scripting.Dictionary") For i = 1 To 100000 If Abs(i Mod 6 - 3) = 2 Then dic.Add i, "": j = j + 1 Next arr = WorksheetFunction.Transpose(dic.keys) [c1].Resize(j, 1) = arr Set dic = Nothing MsgBox "程序共运行了" & Format(Timer - aa, "0.00") & "秒" End Sub |