我在VBA中遇到此错误,当我尝试获取两个数组的相关系数 Arr1 和 Arr2
Dim arr1() As Variant
Dim arr2() As Variant
arr1 and arr2 are initialized in the function.
Dim result As Double
result = Application.WorksheetFunction.Correl(arr1, arr2)
Correl
方法抛出异常
"无法获得工作表函数类的相关属性"
任何想法可能是异常的原因。
编辑:
我认为当其中一个数组具有相同的所有元素时会发生此问题。在这种情况下,相关系数导致#DIV0错误。
由于
答案 0 :(得分:1)
基兰,
两种可能的解决方案可以防止此错误......但是看到您的数据会更有帮助
答案 1 :(得分:0)
我认为您忘记了初始化阵列。
这个非常简单的例子有效:
Public Sub Test()
Dim arr1() As Variant
Dim arr2() As Variant
Dim result As Double
arr1() = Array(1, 2, 3, 4)
arr2() = Array(1, 2, 3, 4)
result = Application.WorksheetFunction.Correl(arr1, arr2)
MsgBox ("The result is: " & result)
End Sub
答案 2 :(得分:0)
与许多工作表函数一样,Application.WorksheetFunction.Correl
的参数必须具有Range,NOT Variant类型。
此外,在Correl
函数中,这2个范围中的任何一个的标准偏差都不能为0.
空值而不是零有时也会导致此错误。
不遵循这些规则,导致OP遇到完全相同的错误。
Dim A as Range, B as Range
Dim myStDevA as Double, myStDevB as Double, myCorrel as Double
myStDevA = Application.WorksheetFunction.StDev(A)
myStDevB = Application.WorksheetFunction.StDev(B)
If myStDevA <> 0 and myStDevB <> 0 Then myCorrel = Application.WorksheetFunction.Correl(A,B)