excel中如何利用宏做上千次的表格數據求平均?
01-06
現在我單張表格已經編寫好了,主要是進行一個在delta對沖背景下的金融稅求和(這個背景不是很重要了)。由於數據是依賴於正太分布的,所以每次刷新表格都會最終得到一個新的結果。現在我想要把這個表格刷新一千次,求這一千次的結果的平均數,請問用宏該怎麼編寫呢?由於之前都沒怎麼用過excel,所以用宏也是聽助教告訴我可以這麼寫的,但是到底怎麼操作完全不懂,宏這個詞也是第一次聽說。要看書學宏也不知道該從哪裡看起,因為內容太多太雜了,我只要這個功能。求幫助!謝謝!
現在這個結果在O263這一格,每按下回車都會刷新一次正態分布隨機數隨之產生一個新的值。我需要把這個O263的值刷新一千次然後求這一千次的平均數,請問這個宏該怎麼做?
感覺樓上Chen Nick老兄的辦法可行,但有點蹩腳,本來留了評,寫太多還是重開一帖吧
ws_Output.Activate " Switch to the sheet called for the Select
ws_Output.Range("b1").SelectSelection.PasteSpecial Paste:= ……
- 我覺得在同一個工作表裡完成比較省事
- 不用activate,這句可刪掉
- 最末兩行可以合併成 ws_Output.Range("b1").PasteSpecial Paste:= ……
- 按照原思路,copy、paste兩個過程可以合併成一次值傳遞
- 其實如果每次刷新只是取數的話,只要每次刷新後下移一行就可以了,不必刷新到A區再copy到B區
另外,沒有把loop寫出來,憑印象寫寫,還是用Acopy到B的思路:
假設A區只有兩列,刷新的數據放到A1:B1Dim MC as cellswith thisworkbook.sheets(1) for each MC in .range(D3:D1002)MC.resize(2,1).value = .range(A1:B1).value
不放心的話可以此處Save一下 call 刷新nextendwith最後把刷新寫成另一個過程。寫vba 宏1. Set Application.Calculation = xlCalculationManual2. 設個變數用來累加- accSum3. 寫個loop
accSum = 0
for i = 1 to 1000 application.calculate accSum=accSum + range("O263").value next i average = accSum / 1000謝邀不需要宏用模擬運算表功能就可實現,具體操作請自學,就點幾下滑鼠的事。
我想到的方法是這樣的:
1。打開auto calculation, 計算spreadsheet,得出一個結果
2。關閉auto calculation,將計算結果copy-paste到另一個sheet上3。寫一個loop,重複步驟以上兩個步驟1000次,第 i 次重複就將結果paste到 i 行4。運行完macro,你會得到一個1000行的結果,然後用formula求平均即可評論里說的方法很實用,也可以去網上參考下別人的code,略加改寫。
以下code僅供參考:
" *** Turn off Automatic Recalculation ***With Application .Calculation = xlManual.MaxChange = 0.001
End WithActiveWorkbook.PrecisionAsDisplayed = False" Add the cashflows calculated into the Pool tab specified ws_Output.Activate " Switch to the sheet called for the Select ws_Output.Range("b1").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlAdd, SkipBlanks:= _ False, Transpose:=False推薦閱讀:
※如何整理excel?
※如何在Excel中提取指定字元內的文本?
※求助!如何簡便地將兩千多個excel文件中的數據放到一個excel表格中?
TAG:數據分析 | MicrosoftExcel | VBA | Excel使用 | Excel編程 |