dynamic范围计算macros

我有一个由12张纸组成的Excel文件。
每张纸都包含大量的数据,范围从A列到X,并在行中有可变范围。
我试图计算每列的平均值和标准误差。 最好在汇总表上输出。

我的思考过程:

  1. 我设法让最后一行下面的每个单元格计算出平均值。
  2. 当我试图用标准误差做同样的事情时,问题是在步骤1)中计算的平均值被包括在计算中。
  3. 毕竟,在单独的“摘要”选项卡中显示这些计算结果似乎更为方便。

这里是我尝试的代码,它的作用是在列的最后一个值的下面生成平均值。

Sub ColumnAverageFormula() For i = 3 To 24 Columns(Columns(i).Address).Select Cells(1, ActiveCell.Column).End(xlDown).Offset(1, 0).Formula = "=Average(" & Cells(1, ActiveCell.Column).Address(0, 0) & ":" & Cells(1, ActiveCell.Column).End(xlDown).Address(0, 0) & ")" Next i For j = 3 To 24 Columns(Columns(j).Address).Select Cells(1, ActiveCell.Column).End(xlDown).Offset(1, 0).Formula = "=stdev.p(" & Cells(1, ActiveCell.Column).Address(0, 0) & ":" & Cells(1, ActiveCell.Column).End(xlDown).Address(0, 0) & ")" Next j End Sub 

Tl; dr:我想编写一些代码来计算Excel文件中每张纸的每一列的平均值和标准误差,结果应该在“汇总”表中生成。

您插入的公式引用了从第1行开始的范围。通常,您所描述的数据集在第一行中具有某种基于文本的列标题标签。 如果是这样的话,你会想从第2行开始,而不是第1行。以下从第1行开始。

 Sub ColumnAverageFormula() Dim c As Long, sr As Long With Worksheets("Sheet1") sr = .Cells(Rows.Count, 3).End(xlUp).Row For c = 3 To 24 .Cells(sr + 1, c).Formula = "=average(" & .Range(.Cells(1, c), .Cells(sr, c)).Address(0, 0) & ")" .Cells(sr + 2, c).Formula = "=stdev.p(" & .Range(.Cells(1, c), .Cells(sr, c)).Address(0, 0) & ")" Next c End With End Sub 'as an alternate, you might consider putting all of the formulas in at once Sub ColumnAverageFormula() Dim c As Long, sr As Long With Worksheets("Sheet1") sr = .Cells(Rows.Count, 3).End(xlUp).Row .Cells(sr + 1, 3).Resize(1, 22).Formula = "=average(" & Range(.Cells(1, 3), .Cells(sr, 3)).Address(0, 0) & ")" .Cells(sr + 2, 3).Resize(1, 22).Formula = "=stdev.p(" & Range(.Cells(1, 3), .Cells(sr, 3)).Address(0, 0) & ")" End With End Sub 

如果.Range(.Cells(1, c), ...第2行开始, .Range(.Cells(1, c), ...更改为.Range(.Cells(2, c), ...