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

myn*_*EFF 3 excel vba excel-vba

假设103.6, 104.8, 106.2 , 105.7,105.6单元格中有5个数字[E2:E6].如果我跑过=AVERAGE这5个数字,那我就得到了105.18.

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

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

但如果我使用范围而不是细胞,答案是正确的.

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

为什么使用单元格和范围存在这种容易计算的差异?这真让我困惑.

Dmi*_*liv 5

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

WorksheetFunction.Average(Range(Cells(2,"E"), Cells(6,"E")))
Run Code Online (Sandbox Code Playgroud)

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

同样为了可靠性,我建议您完全符合您的范围:

With ThisWorkbook.Worksheets("Sheet1")
    MsgBox WorksheetFunction.Average(.Range(.Cells(2, "E"), .Cells(6, "E")))
End With
Run Code Online (Sandbox Code Playgroud)