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
为什么使用单元格和范围存在这种容易计算的差异?这真让我困惑.
原因是因为WorksheetFunction.Average(Cells(2,"E"), Cells(6,"E"))平均只需要两个细胞E2和E6.如果您想获得整个范围的平均值,请使用
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)