作者j2708180 (JaJa)
看板Office
標題[算表] 提升VBA速度
時間Tue Jun 30 15:51:55 2020
之前我用錄製做出的巨集,按下去很容易當機
我把流程分成兩三個,計算筆數也減少
select、selection也刪掉,果然順暢許多
但這樣子程式碼(格子位置)要改就很常遺漏
https://officeguide.cc/excel-vba-speed-up-macro-tips/
請問這篇提到的方式,有沒有效呢?
除了畫面不會亂閃,感覺沒什麼沒什麼變化?
我有一個計算是
輸入 X1,得到好幾格 Y1,複製貼上
再輸入 X2,得到好幾格 Y2,複製貼上並相加
因為Y是公式算出來的,所以不能把公式計算切成手動
但這個貼上並相加,應該就是容易當機的元兇,筆數不能太多
應該要怎麼寫呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.237.7.73 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Office/M.1593503518.A.B99.html
1F:→ soyoso: y是公式算出,是指在儲存格內計算嗎?如果是的話,看是否 06/30 16:16
2F:→ soyoso: 改為在巨集算出,暫存於陣列內,相加方面也在陣列內處理, 06/30 16:16
3F:→ soyoso: 貼上方面則在最後將陣列的資料一次回傳到儲存格範圍 06/30 16:16
4F:→ olycats: 連結提供的方法應該是有效的 我寫VBA的時候也會注意這些 07/01 00:31
5F:推 olycats: 最後提到的複製貼上相加…看能不能提供檔案或程式碼 07/01 00:35
6F:→ olycats: 比較好給建議 07/01 00:35
7F:→ waiter337: 實際操作上 該連結的建議算有用 但算是治標不治本 07/01 07:05
8F:→ waiter337: 不過想治本 難度會大增 需要利用陣列 範圍物件 直接匯 07/01 07:06
9F:→ waiter337: 入方式的寫法 比較有幫助 07/01 07:06
10F:→ waiter337: 利用上述方式速度差距依情況至少都差到3~N倍以上的速度 07/01 07:08
11F:→ waiter337: 若有範例圖檔或google電子表格 用abc123寫出輸入範例 07/01 07:11
12F:→ waiter337: 與輸出範例 可以快速幫你判斷如何下語法 07/01 07:11
已經站內信檔案給你們了
13F:→ olycats: 收到了 晚一點再看 07/01 10:11
14F:→ olycats: 但我跑起來很OK耶 不到一秒就跑完了 是因為筆數有縮減過? 07/01 17:28
15F:→ olycats: 如果不考慮效能問題,你會需要到多少筆資料呢? 07/01 17:28
16F:→ olycats: VBA的迴圈本來就會跑比較久 若要幾百 幾千筆一定超慢 07/01 17:32
17F:推 olycats: 我覺得貼上相加不會是當機元凶 比較可能卡在公式計算 07/01 17:35
18F:→ olycats: 如果把貼上相加那一行暫時先拿掉 就不會當機了嗎? 07/01 17:36
筆數有減少,但我跑起來還是有點慢,可能電腦太舊吧
把vlookup換成index-match ,似乎也可以加速一些
19F:推 waiter337: 不要用 會更快 工作表上不要有任何函數 07/05 23:51
20F:→ waiter337: 都用vba application 解決 07/05 23:51
確實可行耶,不過筆數要夠多,太少的話,就懶得寫哈
※ 編輯: j2708180 (122.121.23.91 臺灣), 07/06/2020 14:38:40