[算表] For...Next與Do...Until的效率比較

看板Office作者 (Blue night)時間5年前 (2018/08/15 09:42), 編輯推噓1(1010)
留言11則, 2人參與, 5年前最新討論串1/1
軟體: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://www.ptt.cc/bbs/Office/M.1534297365.A.539.html

08/15 23:59, 5年前 , 1F
我自己測試兩種寫法沒有顯著差異
08/15 23:59, 1F

08/16 00:00, 5年前 , 2F
Q1:那個i了不起就是佔一個long的記憶體,並不會隨時間而
08/16 00:00, 2F

08/16 00:00, 5年前 , 3F
逐漸占用
08/16 00:00, 3F

08/16 00:01, 5年前 , 4F
不是很確定你Q2寫的恢復相同狀況是什麼意思
08/16 00:01, 4F

08/16 00:07, 5年前 , 5F
你現在兩種寫法,第一種的優點是,如果資料裡沒有>20的數
08/16 00:07, 5F

08/16 00:08, 5年前 , 6F
程式在搜尋一定次數後就會停止,但第二種寫法會一直跑,跑
08/16 00:08, 6F

08/16 00:08, 5年前 , 7F
到格子結束沒辦法往下offset才會跳錯誤停止
08/16 00:08, 7F

08/16 00:10, 5年前 , 8F
而兩者效率都不高,因為你一直要求excel去選取新的格子
08/16 00:10, 8F

08/16 00:15, 5年前 , 9F
提供我的測資和第三種寫法給你參考
08/16 00:15, 9F

08/16 00:15, 5年前 , 10F
08/16 00:15, 10F

08/16 11:00, 5年前 , 11F
謝謝N大指導 小弟研究看看
08/16 11:00, 11F
文章代碼(AID): #1RSuKLKv (Office)