Average的使用在VBA中给出了应用程序定义或对象定义的错误

我试图find使用VBA的几个单元格的平均值,但是当我运行它,它给了我错误。

这是我写的代码:

Sheets("1.A").Cells(124, 12) = Application.WorksheetFunction.Average("F" & matchStartRow & ":F" & matchEndRow) 

也试过这个:

 Sheets("1.A").Cells(124, 12) = Application.WorksheetFunction.Average(Sheets("1.A").Cells("F" & matchStartRow & ":F" & matchEndRow)) 

我想find单元格Fstart到Fend的平均值,但是当我运行代码时,它会给出应用程序定义或对象定义的错误。

不知道为什么有这样的错误。 需要一些指导。

完整代码:

 Dim totalRowsinSheetA As Integer totalRowsinSheetA = Sheets("1.A").Cells(Rows.Count, 1).End(xlUp).row Sheets("1.A").Rows.Hidden = False Sheets("1.A").Rows("3:" & matchStartRow - 1).Hidden = True Sheets("1.A").Rows(matchEndRow + 1 & ":" & totalRowsinSheetA).Hidden = True Sheets("1.A").Rows.Hidden = False 'Calculation of mean,VAR and cov Sheets("1.A").Cells(124, 12) = Application.WorksheetFunction.Average("F" & matchStartRow & ":F" & matchEndRow) 

你在混合你的隐喻,或者其他的东西:)。 您可以在Average WorksheetFunction包含VBA Range语法:

 Sub test() Dim matchStartRow As Long Dim matchEndRow As Long matchStartRow = 2 matchEndRow = 5 Sheets("1.A").Cells(124, 12) = Application.WorksheetFunction.Average(Sheets("1.A").Range("F" & matchStartRow & ":F" & matchEndRow)) End Sub 

或者您可以使用Application.Evaluate并构build一个公式,如同在Excel中显示的那样:

 Sub test2() Dim matchStartRow As Long Dim matchEndRow As Long matchStartRow = 2 matchEndRow = 5 Sheets("1.A").Cells(124, 12) = Application.Evaluate("=Average(F" & matchStartRow & ":F" & matchEndRow & ")") End Sub