Excel VBA - 简单平均计算

时间:2017-06-19 22:31:34

标签: excel excel-vba vba

似乎很简单,但我没有得到预期的结果。

我的尝试,简化为插图:

Sub myMacro2()

Dim intLastRow As Long
Dim intLastCol As Long
Dim numAve As Double
Dim i As Integer

intLastRow = ActiveSheet.UsedRange.Rows.Count
intLastCol = ActiveSheet.UsedRange.Columns.Count

For i = 1 To intLastRow Step 1
    numAve = Application.WorksheetFunction.Average(Cells(i, 2), Cells(i, intLastCol))
    MsgBox "Row: " & i & " Ave: " & numAve
Next i

End Sub

此示例的数据(5列,从左到右填充),空单元格视为NULL。

A   111         
B   111         
C   111 222 333 444
D   111 222     
E   111 222 333 
F   111 222     

msgBox返回“111”作为每行的平均值。

我很确定我遗漏了一些基本的或明显的东西,但这是在逃避我。

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

您没有正确定义范围。

Application.WorksheetFunction.Average(Cells(i, 2), Cells(i, intLastCol))

应该是:

 Application.WorksheetFunction.Average(Range(Cells(i, 2), Cells(i, intLastCol)))
 '                                    ^^^^^^^

如果没有这个,你只是平均两个单元格,而不是加入两个单元格的范围。