今天想做一個在M3儲存格輸入產業別
就會自動到A到J欄找到該產業的個股
並且從M6開始往下列
如下圖
最直觀的想法就是用迴圈全部找一遍
並且新增一個變數 j,當作列數
若條件符合,就放入cells(j,"M")
程式碼如下
Sub test1()
Dim t: t = Timer
LR = Cells(Rows.Count, "A").End(xlUp).Row
j = 6
For i = 1 To LR
If Cells(i, "G") = Range("M3") Then
Cells(j, "M") = Cells(i, "C")
Cells(j, "N") = Cells(i, "D")
j = j + 1
End If
Next
Debug.Print Format(Timer - t, "0.0000秒") & "--方法1"
End Sub
測出來時間:0.0313秒
但最近學了一個使用dictionary物件
於是就來試試看
程式碼如下
Sub test2()
Dim t: t = Timer
Set dic = CreateObject("scripting.dictionary")
LR = Cells(Rows.Count, "A").End(xlUp).Row
For i = 1 To LR
If Cells(i, "G") = Range("M3") Then
dic(Cells(i, "C").Value) = Cells(i, "D").Value
End If
Next
keyarr = dic.keys
itemarr = dic.items
Range("M6").Resize(dic.Count, 1).Value = Application.Transpose(keyarr)
Range("N6").Resize(dic.Count, 1).Value = Application.Transpose(itemarr)
Debug.Print Format(Timer - t, "0.0000秒") & "--方法2"
End Sub
測出來時間:0.0156秒
比上一個程式碼快了一倍
而這還是用個股比較少的水泥產業測試的
如果使用個股較多的電子零組件產業呢?
測試如下
方法1:0.3906秒
方法2:0.0313秒
速度竟差了十倍以上!
學習dictionary的網站:
http://club.excelhome.net/forum.php?mod=viewthread&tid=1068483&extra=page%3D1
沒有留言:
張貼留言