如何计算Excel中同一列中不同范围的平均值,最好使用命令button?

我使用Excel 2013.有大约五十个工作表,我要计算工作表中的数百个平均值。 数据分布如C3:C10,C12:C16,C18:C35等,我想计算在这些范围的每一个,如C11,C17,C36等结束时的平均值。范围总是在相同的列,每个范围由两个空白单元分隔,但范围不固定。

我试图录制一个macros。

Sub Averaging() ActiveCell.FormulaR1C1 = "=AVERAGE(R[-12]C:R[-1]C)" End Sub 

但我不知道如何使R [-12] C部分dynamic。 我正在考虑创build一个命令button,select单元格后,例如范围是C3:C10,我select单元格C11,按下命令button,它会自动select范围并计算平均值。 可能吗?

任何帮助将不胜感激。 VBA,公式任何东西。

点击列C中的第一个单元格,然后运行这个macros:

 Sub dural() Dim r1 As Range, r2 As Range Set r1 = ActiveCell Do Set r2 = r1.End(xlDown) If r2.Row = Rows.Count Then Exit Sub r2.Offset(1, 0).Formula = "=AVERAGE(" & Range(r1, r2).Address(0, 0) & ")" Set r1 = r2.Offset(3, 0) Loop End Sub 

之前:

在这里输入图像说明

之后:

在这里输入图像说明

你可以使用

 Sub WriteAverage(columnRng As Range) Dim iArea As Long With columnRng.Columns(1).SpecialCells(xlCellTypeConstants, xlNumbers).Areas For iArea = 1 To .Count With .Item(iArea).Cells .Offset(.Rows.Count).Resize(1).FormulaR1C1 = "=average(R" & .Cells(1, 1).Row & "C:R[-1]C)" End With Next iArea End With End Sub 

被称为如下

 Call WriteAverage(Columns("C"))