计算平均值中单元格和范围之间的差异

时间:2014-04-09 18:06:48

标签: excel vba excel-vba

假设单元格103.6, 104.8, 106.2 , 105.7,105.6中有5个数字[E2:E6]。如果我对这5个号码运行=AVERAGE,那么我会得到105.18

但是,我在VBA的即时窗口中执行以下操作。我会得到一个不同的答案。

?worksheetfunction.Average(cells(2,"E"), cells(6,"E")) 104.6

但如果我使用范围代替细胞,答案是正确的。

?worksheetfunction.Average(range("E2:E6")) 105.18

为什么使用单元格和范围有这样的差异来进行如此简单的计算?这真让我困惑。

1 个答案:

答案 0 :(得分:5)

原因是因为WorksheetFunction.Average(Cells(2,"E"), Cells(6,"E"))平均只有两个单元E2E6。如果您想获得整个范围的平均值,请使用

WorksheetFunction.Average(Range(Cells(2,"E"), Cells(6,"E")))

或直接使用WorksheetFunction.Average(Range("E2:E6"))

另外,为了确保可靠性,我建议您完全符合您的范围:

With ThisWorkbook.Worksheets("Sheet1")
    MsgBox WorksheetFunction.Average(.Range(.Cells(2, "E"), .Cells(6, "E")))
End With