我收到错误'无法获得Worksheetfunction类的平均属性'当试图计算2个范围的平均值时。
我的表格可以在下面找到。
当我计算%列的平均值时,我没有问题。它为我提供了正确的输出,但是,当我尝试计算$ column的平均值时,我遇到了问题。
Col | % | $
1 | 2.33% | $2.33
2 | 3.64% | $3.64
3 | 10.83% | $10.83
4 | 6.07% | $6.07
5 | - | -
6 | 12.99% | $12.99
7 | 18.99% | $18.99
Dim myRange As Range
Dim myAverage As Variant
'The user selects the range
Set myRange = Application.InputBox( _
prompt:="Please select the range", Title:="My Range", Type:=8)
'This splits the range into two areas because the user typically does not select the row with the "-" in it.
'myRange would typically look something like (B1:B4,B6:B7) OR (C1:C4,C6:C7)
Area1 = myRange.Areas(1)
Area2 = myRange.Areas(2)
myAverage = Application.WorksheetFunction.Average(Area1, Area2)
我收到的错误是“无法获得Worksheetfunction class'的平均属性”。并且它发生在myAverage计算中。
有关为什么计算%列没有问题,但是没有计算$列的任何想法?
提前致谢!
答案 0 :(得分:3)
声明为正确的类型(Range对象):
Dim Area1 As Range
Dim Area2 As Range
使用Set
关键字分配给对象变量。
Set Area1 = myRange.Areas(1)
Set Area2 = myRange.Areas(2)
然后,您应该可以使用Application.Average
或Application.WorksheetFunction.Average
来获得平均值。
myAverage Application.Average(Area1, Area2)
否则,您将变量数组传递给不受支持的函数,因此会引发错误。 Average
函数需要连续范围的多个单元格,或单个单元格或值的逐项列表。您不能将多个范围的多个单元格分别传递给它。
或者,完全省略Area1/Area2
步骤并简单地执行:
myAverage = Application.Average(myRange.Areas(1), myRange.Areas(2))