Excel 无法获取工作表函数类的correl属性错误
我在VBA中得到这个错误,当我试图得到两个数组的相关系数Arr1和Arr2Excel 无法获取工作表函数类的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属性” 你知道例
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是的,这就是问题所在。