VBA平均功能错误 - 1004

时间:2016-10-31 15:21:05

标签: vba excel-vba excel

我收到错误'无法获得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计算中。

有关为什么计算%列没有问题,但是没有计算$列的任何想法?

提前致谢!

1 个答案:

答案 0 :(得分:3)

声明为正确的类型(Range对象):

Dim Area1 As Range
Dim Area2 As Range

使用Set关键字分配给对象变量。

Set Area1 = myRange.Areas(1)
Set Area2 = myRange.Areas(2)

然后,您应该可以使用Application.AverageApplication.WorksheetFunction.Average来获得平均值。

myAverage Application.Average(Area1, Area2)

否则,您将变量数组传递给不受支持的函数,因此会引发错误。 Average函数需要连续范围的多个单元格,或单个单元格或值的逐项列表。您不能将多个范围的多个单元格分别传递给它。

或者,完全省略Area1/Area2步骤并简单地执行:

myAverage = Application.Average(myRange.Areas(1), myRange.Areas(2))