在VBA的excel平均不同的长度范围

我正在尝试编写一个简短的macros,其中包含一行代表一组单元格的平均值。 在每个工作表中,我想要在单元格范围内运行macros是不同的长度。

运行macros后,单元格E1包含"=AVERAGE(Rng)"

  Dim homeSheet As Worksheet Set homeSheet = ActiveSheet Dim lastRow As Long Dim Rng As Range lastRow = Range("A" & Rows.Count).End(xlUp).Row Set Rng = Range("B2:B" & lastRow) Range("E1").Formula = "=Average(Rng)" Range("E2").Formula = "=STDEV(Rng)" Range("E3").Select ActiveWindow.SmallScroll Down:=-2 End Sub 

我也试过了

 Range("E1").Formula = "=Average(Range("B2:B" & lastRow))" 

而不尝试使用Set Rng = Range("B2:B" & lastRow)

你需要在你的公式中使用Rng.Address 。 尝试将您的代码更改为:

 Sub Avg() Dim homeSheet As Worksheet Set homeSheet = ActiveSheet Dim lastRow As Long Dim Rng As Range lastRow = Range("A" & Rows.Count).End(xlUp).Row Set Rng = Range("B2:B" & lastRow) Range("E1").Formula = "=Average(" & Rng.Address & ")" Range("E2").Formula = "=STDEV(" & Rng.Address & ")" Range("E3").Select End Sub 

如果您要使用您尝试的第二种方法,则需要将该行代码更改为:

 Range("E1").Formula = "=Average(" & Range("B2:B" & lastRow).Address & ")"