调用数组的子集来计算excel vba中的自相关

时间:2013-09-16 03:35:22

标签: excel-vba vba excel

我想计算一个数组的自相关,因此需要访问数组的两个子集(一个有滞后)。这是我的代码:

选项基础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工作表上进行此计算,因为我不想输出数组的实际值。感谢。

1 个答案:

答案 0 :(得分:0)

在这里得到答案:http://answers.microsoft.com/en-us/office/forum/office_2010-excel/how-to-access-subset-of-an-array-in-excel-vba/c74765e5-b57e-423f-b9d4-0935ef9674e3?tm=1379435289782

不是在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)&“)”))))