我想计算一个数组的自相关,因此需要访问数组的两个子集(一个有滞后)。这是我的代码:
选项基础1
Sub test()
Dim intPerNum As Integer
intPerNum = 10
Dim dblMRet() As Double
ReDim dblMRet(intPerNum)
Dim intPerCntr As Integer
Rnd (-2)
For intPerCntr = 1 To intPerNum
dblMRet(intPerCntr) = WorksheetFunction.NormSInv(Rnd(1))
Range("TesterTest").Offset(0, intPerCntr) = dblMRet(intPerCntr) 'for debugging
Next intPerCntr
With WorksheetFunction
Range("Output") = .Covar(.Index(dblMRet,0,1):.Index(dblMRet,0,intPerNum-1),.Index(dblMRet,0,2):.Index(dblMRet,0,intPerNum)) / .Var(dblMRet)
End With
End Sub
我无法使用“:”访问VBA中的dblMRet数组的子集,因此该行不起作用。这样做的好方法是什么?我不想在Excel工作表上进行此计算,因为我不想输出数组的实际值。感谢。
答案 0 :(得分:0)
不是在VBA中使用“:”,而是可以通过在Index函数中使用Evaluate来完成同样的事情。工作得很漂亮。
如果你需要在Evaluate中使用变量,你可以使用&来连接字符串。
例如,而不是使用:
范围(“输出”)= WorksheetFunction.Average(WorksheetFunction.Index(MyArray,1,Evaluate(“ROW(1:3)”))))
我可以使用:
范围(“输出”)= WorksheetFunction.Average(WorksheetFunction.Index(MyArray,1,Evaluate(“ROW(1:”&(intPerNum-1)&“)”))))