[算表] 如何提高代碼的運行速度

看板Office作者 (bless)時間9年前 (2016/09/03 13:12), 編輯推噓1(1011)
留言12則, 3人參與, 最新討論串1/1
軟體:excel 版本:2007 Sub aaa() r = [w65536].End(xlUp).Row For i = r To 1 Step -1 If Cells(i, 23) = 0 Then Rows(i).Delete Next End Sub 如果第23列有10000行,其中等于0的單元格有8000,那么運行改代碼就非常費時間 求能大幅度提高速度的巨集。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.38.52.181 ※ 文章網址: https://www.ptt.cc/bbs/Office/M.1472879539.A.C38.html

09/03 13:21, , 1F
不用迴圈的話,用篩選,刪除
09/03 13:21, 1F

09/03 13:25, , 2F
或是用進階篩選將不為0的複製到其他地方,就可不刪列
09/03 13:25, 2F

09/03 13:28, , 3F
range.autofilter或range.advancedfilter看是否可改善
09/03 13:28, 3F

09/03 13:32, , 4F
當前的方法就是進階篩選為0,然后
09/03 13:32, 4F

09/03 13:32, , 5F
SpecialCells(xlCellTypeVisible).Delete
09/03 13:32, 5F

09/03 13:32, , 6F
但是還是有點慢
09/03 13:32, 6F

09/03 13:39, , 7F
那將不為0複製到其他工作表,不刪列,改以刪工作表
09/03 13:39, 7F

09/03 14:04, , 8F
一會試試,現在有問題是這進階篩選0,刪除,出現了對話框
09/03 14:04, 8F

09/03 14:07, , 9F
"是否刪除工作表整行",如何取消這個對話框,默認"確認"
09/03 14:07, 9F

09/03 14:09, , 10F
解決了 Application.DisplayAlerts = False
09/03 14:09, 10F

09/04 01:25, , 11F
不要先做delete,跑一圈挑出來之後一次刪除。或是先clea
09/04 01:25, 11F

09/04 01:25, , 12F
r,然後一次sort。
09/04 01:25, 12F
文章代碼(AID): #1Nobkpmu (Office)
文章代碼(AID): #1Nobkpmu (Office)