无法获取工作表函数类Error的correl属性

时间:2012-08-15 06:08:47

标签: excel excel-vba vba

我在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错误。

由于

3 个答案:

答案 0 :(得分:1)

基兰,

两种可能的解决方案可以防止此错误......但是看到您的数据会更有帮助

  1. 您的变体数组中的一个(或两个)包含字符串而不是数字
  2. 您的数组大小不相等

答案 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)