平均动态表Excel VBA的每列

时间:2017-07-12 05:49:19

标签: excel vba excel-vba

我刚刚开始在过去两周内学习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

1 个答案:

答案 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