Excel VBA - 根据是否启用复选框计算均值和标准开发

时间:2013-07-15 14:21:07

标签: excel excel-vba checkbox vba

从第5行到第25行,我在C列中有2013年数据,在D列中有2014年数据。在E栏中,每行都有一个复选框,链接到它所在的单元格。我使用下面的代码来计算第26行中C列和D列中数据的平均值,但仅包括旁边带有true(启用)复选框的行。到目前为止一切都很好。

现在,我的问题是,我想扩展此代码以计算2013年和2014年(即分别为C和D列)第27行的平均值和第28行的标准差。我不确定怎么做 - 你能帮我解决这个问题吗?谢谢你的帮助!

mean13 = 0
mean14 = 0
inc = 0

For Each c In ActiveSheet.Range("E5:E26").Cells

If c.Row <> 26 Then

    If c = "True" Then

    mean13 = mean13 + Cells(c.Row, c.Column - 2).Value
    mean14 = mean14 + Cells(c.Row, c.Column - 1).Value
    inc = inc + 1

    End If

ElseIf c.Row = 26 Then

Cells(26, c.Column - 2).Value = mean13 / inc
Cells(26, c.Column - 1).Value = mean14 / inc

End If

Next

1 个答案:

答案 0 :(得分:1)

根据Julien Marrec的评论,您可能希望熟悉数组公式。好的起点可能是Cheap Pearson intro to Array Formulas

在您的情况下,您可能想要使用:

=AVERAGE(IF(E5:E26=TRUE,D5:D26))
=AVERAGE(IF(E5:E26=TRUE,C5:C26))

分别计算C列和D列的平均值。

类似地:

=STDEV.P(IF(E5:E26=TRUE,D5:D26))
=MEDIAN(IF(E5:E26=TRUE,D5:D26))

记住(引自链接):

  

输入阵列公式:要输入公式作为数组公式,请在单元格中键入公式,然后同时按下CTRL SHIFT和ENTER键,而不是按ENTER键。您必须在第一次输入公式时以及稍后编辑公式时执行此操作。如果您正确执行此操作,Excel将显示括在花括号{}中的公式。您不输入大括号 - Excel将自动显示它们。如果您忽略使用CTRL SHIFT ENTER输入公式,公式可能会返回#VALUE错误或返回错误的结果。