[VBA ] 如何調整可讓執行速度變快

看板Visual_Basic作者 (阿吉)時間13年前 (2012/04/26 11:56), 編輯推噓7(702)
留言9則, 6人參與, 最新討論串1/1
我要計算15年的數值~ 每一年會再切成365期(以天計算)~ 然後將數字(在不同sheet)相乘後相加~ 可是跑一次要1小時以上~不知道有沒有可以更快的方法 以下是我的程式碼~ For i = 0 To (15 * h - 1) '保障15年 For j = 0 To (15 * h - 1 - i) A = Int(i / h) B = Int(j / h) VM1 = VM1 + (1 + r) ^ (-(i + j + 1) / h) * Sheets("result_1_M").Cells(2 + i, 2 + k) * Sheets("健康體死力_M").Cells(3 + k + A, 5) / h * Sheets("result_2_M").Cells(2 + j, 2 + k + A) * Sheets("罹患癌症_腦中風_M").Cells(2 + B, 2 + A + k) / h Next j Next i 謝謝指教^^ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.14.83.23

04/26 12:04, , 1F
我沒細看 但是我覺得用函數配合可能會改善
04/26 12:04, 1F

04/26 12:13, , 2F
把工作表內容先抓到陣列去處理?
04/26 12:13, 2F

04/26 12:44, , 3F
首先要把"自動計算"這個功能關掉 大概可以提升2~10倍速度
04/26 12:44, 3F

04/26 12:52, , 4F
在開頭加入 Application.Calculation = xlCalculationManual
04/26 12:52, 4F

04/27 01:46, , 5F
塞到array+1
04/27 01:46, 5F

04/27 11:42, , 6F
arr為陣列 arr=Sheets("sheet1").Range(要抓的範圍).Value
04/27 11:42, 6F

04/27 11:43, , 7F
可以這樣做啦,不過如果你只是要加總 用1F說的配合函數才對
04/27 11:43, 7F

04/30 21:59, , 8F
把4個sheet.cells讀到array 讀到array+1
04/30 21:59, 8F

04/30 22:01, , 9F
只是讀到array之後,就無需調整自動計算設定。
04/30 22:01, 9F
文章代碼(AID): #1FcCU9_L (Visual_Basic)