excel中如何利用宏做上千次的表格數據求平均?

現在我單張表格已經編寫好了,主要是進行一個在delta對沖背景下的金融稅求和(這個背景不是很重要了)。由於數據是依賴於正太分布的,所以每次刷新表格都會最終得到一個新的結果。現在我想要把這個表格刷新一千次,求這一千次的結果的平均數,請問用宏該怎麼編寫呢?由於之前都沒怎麼用過excel,所以用宏也是聽助教告訴我可以這麼寫的,但是到底怎麼操作完全不懂,宏這個詞也是第一次聽說。要看書學宏也不知道該從哪裡看起,因為內容太多太雜了,我只要這個功能。求幫助!謝謝!

現在這個結果在O263這一格,每按下回車都會刷新一次正態分布隨機數隨之產生一個新的值。我需要把這個O263的值刷新一千次然後求這一千次的平均數,請問這個宏該怎麼做?


感覺樓上Chen Nick老兄的辦法可行,但有點蹩腳,本來留了評,寫太多還是重開一帖吧

ws_Output.Activate " Switch to the sheet called for the Select

ws_Output.Range("b1").Select

Selection.PasteSpecial Paste:= ……

  • 我覺得在同一個工作表裡完成比較省事

  • 不用activate,這句可刪掉

  • 最末兩行可以合併成 ws_Output.Range("b1").PasteSpecial Paste:= ……

  • 按照原思路,copy、paste兩個過程可以合併成一次值傳遞

  • 其實如果每次刷新只是取數的話,只要每次刷新後下移一行就可以了,不必刷新到A區再copy到B區

另外,沒有把loop寫出來,憑印象寫寫,還是用Acopy到B的思路:

假設A區只有兩列,刷新的數據放到A1:B1

Dim MC as cells

with thisworkbook.sheets(1)

for each MC in .range(D3:D1002)

MC.resize(2,1).value = .range(A1:B1).value

不放心的話可以此處Save一下

call 刷新

next

endwith

最後把刷新寫成另一個過程。


寫vba 宏

1. Set Application.Calculation = xlCalculationManual

2. 設個變數用來累加- accSum

3. 寫個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 With

ActiveWorkbook.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編程 |