Excel 无法获取工作表函数类的correl属性错误

Excel 无法获取工作表函数类的correl属性错误,excel,vba,Excel,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方法引发异常 “无法获取工作表函数类的correl属性” 你知道例

我在VBA中得到这个错误,当我试图得到两个数组的相关系数Arr1Arr2

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
方法引发异常

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

你知道例外的原因吗

编辑:

我认为当一个数组的所有元素都相同时,就会出现这个问题。在这种情况下,相关系数会导致#DIV0误差


谢谢

我想您忘记初始化阵列了

这个非常简单的例子可以工作:

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

我想您忘记初始化数组了

这个非常简单的例子可以工作:

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
基兰

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

  • 一个(或两个)变量数组包含字符串而不是数字
  • 您的数组大小不相等
  • 基兰

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

  • 一个(或两个)变量数组包含字符串而不是数字
  • 您的数组大小不相等

  • 与许多工作表函数一样,
    Application.WorksheetFunction.Correl的参数必须具有范围,而不是变量类型

    此外,在
    Correl
    函数中,这两个范围中的任何一个的标准偏差都不能为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)
    
    将A变暗为范围,将B变暗为范围
    将myStDevA暗显为双精度,myStDevB暗显为双精度,myCorrel暗显为双精度
    myStDevA=Application.WorksheetFunction.StDev(A)
    myStDevB=Application.WorksheetFunction.StDev(B)
    如果myStDevA 0和myStDevB 0,则myCorrel=Application.WorksheetFunction.Correl(A,B)
    
    与许多工作表函数一样,
    Application.WorksheetFunction.Correl的参数必须具有范围,而不是变量类型

    此外,在
    Correl
    函数中,这两个范围中的任何一个的标准偏差都不能为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)
    
    将A变暗为范围,将B变暗为范围
    将myStDevA暗显为双精度,myStDevB暗显为双精度,myCorrel暗显为双精度
    myStDevA=Application.WorksheetFunction.StDev(A)
    myStDevB=Application.WorksheetFunction.StDev(B)
    如果myStDevA 0和myStDevB 0,则myCorrel=Application.WorksheetFunction.Correl(A,B)
    
    No-省略
    arr1
    arr2
    的值会产生与发布的错误不同的错误。哦,对不起,我忘记粘贴代码的那部分了。数组已初始化。数组
    arr1
    arr2
    是函数的参数。@KiranChandrashekhar:那你为什么不现在粘贴它,而不是强迫我们猜测。。。您应该编辑您的问题。否-省略
    arr1
    arr2
    的值会产生与发布的错误不同的错误。哦,抱歉,我忘记粘贴代码的那部分。数组已初始化。数组
    arr1
    arr2
    是函数的参数。@KiranChandrashekhar:那你为什么不现在粘贴它,而不是强迫我们猜测。。。你应该编辑你的问题。我注意到其中一个数组(
    arr1
    )的所有值都是1。而
    corr
    会导致#DIV0错误。我认为,这就是它给出“无法获取worksheetfunction类的correl属性”的原因。你认为这是正确的吗problem@kiranchandrashekhar是-这就是问题所在。我注意到其中一个数组(
    arr1
    )的所有值都是1。而
    corr
    会导致#DIV0错误。我认为,这就是它给出“无法获取worksheetfunction类的correl属性”的原因。你认为这是正确的吗problem@kiranchandrashekhar是的,这就是问题所在。