平均每个dynamic表格Excel VBA的列

我刚刚在过去的两周里开始学习VBA,所以如果这是一个基本的疏忽,我很抱歉。

我试图finddynamic表中列的平均值,然后将这些值(每个唯一列的平均值)填充到Sheet3中的平均值表中。 我在平均范围中find的所有其他post都是指特定的范围,例如(“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 

你可以直接在Excel中使用公式,或者你可以减less你的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