平均 VBA 函数
Average VBA function
我正在
Run-time error '424': Object required"
每次我尝试这个,我都不明白为什么!
Dim CCAnual(1 To 200) As Currency
For i = 1 To 188
Set CCAnual(i) = Applications.WorksheetFunction.Average(Worksheets(3).Range(Cells(i + 2, 5), Cells(i + 14, 5)))
Next i
For i = 189 To 200
Set CCAnual(i) = Applications.WorksheetFunction.Average(Worksheets(3).Range(Cells(i, 5), Cells(200, 5)))
Next i
我做错了什么?
我试过按原样定义工作表,使用 ActiveWorksheet 和什么都不定义。
第一期来了CCAnual(i) = Applications.WorksheetFunction
使用这个:
CCAnual(i) = WorksheetFunction.Average(Range(Cells(i + 2, 5), Cells(i + 14, 5)))
或者这个:
CCAnual(i) = Application.Average(Range(Cells(i + 2, 5), Cells(i + 14, 5)))
或者这个:
CCAnual(i) = Evaluate("=Average(" & Range(Cells(i + 2, 5), Cells(i + 14, 5)).Address & ")")
您还应该记住,您可能会遇到 第二个问题 ,.Average()
不适用于空单元格,因此至少有一个单元格应为数值
所以最后你的代码应该是这样的:
Sub test()
Dim CCAnual(1 To 200) As Currency
For i = 1 To 188
If WorksheetFunction.CountA(Range(Cells(i + 2, 5), Cells(i + 14, 5))) = 0 Then
Exit For
Else
CCAnual(i) = Application.Average(Range(Cells(i + 2, 5), Cells(i + 14, 5)))
End if
Next i
''''''''''
End Sub
我正在
Run-time error '424': Object required"
每次我尝试这个,我都不明白为什么!
Dim CCAnual(1 To 200) As Currency
For i = 1 To 188
Set CCAnual(i) = Applications.WorksheetFunction.Average(Worksheets(3).Range(Cells(i + 2, 5), Cells(i + 14, 5)))
Next i
For i = 189 To 200
Set CCAnual(i) = Applications.WorksheetFunction.Average(Worksheets(3).Range(Cells(i, 5), Cells(200, 5)))
Next i
我做错了什么?
我试过按原样定义工作表,使用 ActiveWorksheet 和什么都不定义。
第一期来了CCAnual(i) = Applications.WorksheetFunction
使用这个:
CCAnual(i) = WorksheetFunction.Average(Range(Cells(i + 2, 5), Cells(i + 14, 5)))
或者这个:
CCAnual(i) = Application.Average(Range(Cells(i + 2, 5), Cells(i + 14, 5)))
或者这个:
CCAnual(i) = Evaluate("=Average(" & Range(Cells(i + 2, 5), Cells(i + 14, 5)).Address & ")")
您还应该记住,您可能会遇到 第二个问题 ,.Average()
不适用于空单元格,因此至少有一个单元格应为数值
所以最后你的代码应该是这样的:
Sub test()
Dim CCAnual(1 To 200) As Currency
For i = 1 To 188
If WorksheetFunction.CountA(Range(Cells(i + 2, 5), Cells(i + 14, 5))) = 0 Then
Exit For
Else
CCAnual(i) = Application.Average(Range(Cells(i + 2, 5), Cells(i + 14, 5)))
End if
Next i
''''''''''
End Sub