我刚刚开始在过去两周内学习VBA,如果这是一个基本的疏忽,那么道歉。
我正在尝试在动态表格中找到每个列的平均值,然后将这些值(每个唯一列的平均值)填充到Sheet3中的平均值表中。我在平均范围内找到的所有其他帖子都指特定范围,例如(“A2:A23”),并且会导致将一列的平均值多次粘贴,而不是每列平均一次。这是我到目前为止的代码。任何关于它可以改进的地方的反馈都非常感谢。
Sub AVERAGES()
Set s1 = ThisWorkbook.Sheets("Sheet1")
Set s3 = ThisWorkbook.Sheets("Sheet3")
j = 0
Do While s1.Range("B2").Offset(0, j).Value <> ""
i = 0
Do While s1.Range("B2").Offset(i, j).Value <> ""
s1.Range("B2").Offset(i, j).Select
i = i + 1
Loop
Ave = Application.WorksheetFunction.Average(s1.Range(Cells(2, j), s1.Range(Cells(2, j).Offset(i, j))))
s3.Range(s3.Range("B2"), s3.Range("B2").Offset(0, j)).Value = Ave
j = j + 1
Loop
End Sub
答案 0 :(得分:1)
您可以直接在Excel中使用公式,也可以将VBA代码缩减为:
Sub AVERAGES()
Dim lastCol As Long
lastCol = ThisWorkbook.Sheets("Sheet1").Cells(2, Columns.Count).End(xlToLeft).Column
With ThisWorkbook.Sheets("Sheet3").Range("B2").Resize(1, lastCol - 1)
.Formula = "=Average(Sheet1!B:B)"
.value = .value
End With
End Sub