我的目标是编写一个将回报转换为价格的函数。 我有一个存储范围之内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)))不知道这是否有帮助? –