作者joewusuper (阿吉)
看板Visual_Basic
標題[VBA ] 如何調整可讓執行速度變快
時間Thu Apr 26 11:56:54 2012
我要計算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
1F:推 lion21:我沒細看 但是我覺得用函數配合可能會改善 04/26 12:04
2F:推 bulldog:把工作表內容先抓到陣列去處理? 04/26 12:13
3F:推 Marty:首先要把"自動計算"這個功能關掉 大概可以提升2~10倍速度 04/26 12:44
4F:推 Marty:在開頭加入 Application.Calculation = xlCalculationManual 04/26 12:52
5F:推 EdisonX:塞到array+1 04/27 01:46
6F:推 ClubT:arr為陣列 arr=Sheets("sheet1").Range(要抓的範圍).Value 04/27 11:42
7F:→ ClubT:可以這樣做啦,不過如果你只是要加總 用1F說的配合函數才對 04/27 11:43
8F:推 g921:把4個sheet.cells讀到array 讀到array+1 04/30 21:59
9F:→ g921:只是讀到array之後,就無需調整自動計算設定。 04/30 22:01