作者home0303 (Blue night)
看板Office
標題[算表] For...Next與Do...Until的效率比較
時間Wed Aug 15 09:42:43 2018
軟體:EXCEL
版本:2010
Sub n()
For i = 1 To 999999
If ActiveCell > 20 Then Exit For
ActiveCell.Offset(1).Select
Next
End Sub
Sub y()
Do Until ActiveCell > 20
ActiveCell.Offset(1).Select
Loop
End Sub
這兩種寫法的效果是一樣 但我不確定我的想法對不對
Q1:因為sub n有使用到變數i 所以會逐漸占用較大記憶體而降低效率
Q2:假如在end sub前面加一個Set i = Nothing 最後會使兩種巨集又恢復相同狀況
Q3:假設Q2為正確 雖然最後釋放變數了 但過程中還是有占用記憶體
所以還是Do Until的過程效率較好
非科班出身 還在摸索中 還請指教
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 175.98.114.28
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Office/M.1534297365.A.539.html
1F:推 newacc: 我自己測試兩種寫法沒有顯著差異 08/15 23:59
2F:→ newacc: Q1:那個i了不起就是佔一個long的記憶體,並不會隨時間而 08/16 00:00
3F:→ newacc: 逐漸占用 08/16 00:00
4F:→ newacc: 不是很確定你Q2寫的恢復相同狀況是什麼意思 08/16 00:01
5F:→ newacc: 你現在兩種寫法,第一種的優點是,如果資料裡沒有>20的數 08/16 00:07
6F:→ newacc: 程式在搜尋一定次數後就會停止,但第二種寫法會一直跑,跑 08/16 00:08
7F:→ newacc: 到格子結束沒辦法往下offset才會跳錯誤停止 08/16 00:08
8F:→ newacc: 而兩者效率都不高,因為你一直要求excel去選取新的格子 08/16 00:10
9F:→ newacc: 提供我的測資和第三種寫法給你參考 08/16 00:15
11F:→ home0303: 謝謝N大指導 小弟研究看看 08/16 11:00