作者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/cn.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