我的目標是編寫一個將回報轉換爲價格的函數。 我有一個存儲範圍之內Excel中像這樣的回報的向量:避免在VBA中循環數組?
r1
r2
...
rn
現在假設這些收益都存儲在B列中 在VBA中寫了下面的代碼
Dim r As Range
Set r = ThisWorkbook.Sheets("Foglio1").Range("B2:B" & _
ThisWorkbook.Sheets("Foglio1").Range("B" & Rows.Count).End(xlUp).Row)
Dim temp() As Variant
temp = r
所以我成功將值r1,r2,...,rn分配給我稱爲temp的數組。
現在,如果我是在R或MATLAB我會做以下,以轉換回價格:
temp = cumprod(1 + temp)
與命令的一條線,我會轉換返回到價格
(1 + TEMP)應總結1至數組的每個元素和cumprod應該返回我的向量與所述累積產物。
是否有可能達到相同的結果,我不得不在VBA中使用循環?
非常感謝您的寶貴時間 有一個偉大的週末
除了使用循環以外,沒有其他方法可以實現這一點。在某些語言中,循環可能比其他語言隱藏在語法糖後面,在VBA中它根本不隱藏,您必須享受它。如果你想要一些糖,創建一個接受Variant數組和一個參數來添加的函數。 – GSerg
你可以在沒有的情況下使用數學公式使用數組公式EXP(SUM(LN(B2:B30)))不知道這是否有幫助? –