【问题标题】:Excel VBA - calculating mean and standard dev based on whether checkbox is enabledExcel VBA - 根据是否启用复选框计算平均值和标准偏差
【发布时间】:2013-07-16 01:04:22
【问题描述】:

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

现在,我的问题是,我想扩展此代码以计算 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

【问题讨论】:

  • 您使用 VBA 这样做有什么原因吗?

标签: excel checkbox vba


【解决方案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 错误或返回不正确的结果。

【讨论】:

  • 谢谢,我不熟悉数组公式。不过这真的很有帮助!
最近更新 更多