假设单元格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
为什么使用单元格和范围有这样的差异来进行如此简单的计算?这真让我困惑。
答案 0 :(得分:5)
原因是因为WorksheetFunction.Average(Cells(2,"E"), Cells(6,"E"))
平均只有两个单元E2
和E6
。如果您想获得整个范围的平均值,请使用
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