Excel VBA宏 - 如何获取列的中位数和平均值并打印出结果

时间:2018-01-02 18:59:36

标签: excel vba excel-vba

我正在尝试查找列名称“总循环时间”,然后在列的最后,我想要平均值,然后在整个列的中位数以下的一行。

下面是一个开始,但它似乎只从一个表中拉出Table14参考。我不明白如何陈述只看这个活动表。

Sub Macro10()
'
' Macro10 Macro
'
Range("U" & Cells.Rows.Count).End(xlUp).Select
ActiveCell.Offset(1, 0).Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = _
        "=AVERAGE(Table14[[#Headers],[#Data],[Total Cycle Time]])"
    ActiveCell.Offset(1, 0).Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = _
        "=MEDIAN(Table14[[#Headers],[#Data],[Total Cycle Time]])"

'
End Sub

1 个答案:

答案 0 :(得分:0)

假设在工作表的某个地方我们有一个标题单元格,其下方的数据如下:

enter image description here

运行这个短宏将:

1.定位标题和相关的数据列
2.将所需的统计数据放在值

以下的单元格中
Sub SaveStats()
    Dim header As Range, DataRange As Range

    Set header = Cells.Find(What:="total cycle time", after:=Cells(1, 1))
    Set DataRange = Range(header, Cells(Rows.Count, header.Column).End(xlUp))

    With Application.WorksheetFunction
        Cells(DataRange.Rows.Count + DataRange.Row, DataRange.Column).Value = .Average(DataRange)
        Cells(DataRange.Rows.Count + DataRange.Row + 1, DataRange.Column).Value = .Median(DataRange)
    End With
End Sub

enter image description here

注意:

宏没有错误处理。如果标题下面没有数据,它将会死亡。