似乎很简单,但我没有得到预期的结果。
我的尝试,简化为插图:
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”作为每行的平均值。
我很确定我遗漏了一些基本的或明显的东西,但这是在逃避我。
有什么建议吗?
答案 0 :(得分:3)
您没有正确定义范围。
Application.WorksheetFunction.Average(Cells(i, 2), Cells(i, intLastCol))
应该是:
Application.WorksheetFunction.Average(Range(Cells(i, 2), Cells(i, intLastCol)))
' ^^^^^^^
如果没有这个,你只是平均两个单元格,而不是加入两个单元格的范围。