如果B(i)为TRUE且B(i-1)为FALSE,如何找到Excel列A的平均值?

时间:2015-01-26 07:51:40

标签: excel average conditional-statements

我知道标题令人困惑,但用一句话概括问题并不容易,所以请耐心等待。

我在Excel中有两列,A列包含实数,B列包含TRUE或FALSE的布尔值。我想获得A列中每个值的平均值,其中B中的相应单元格为TRUE,上面的单元格为FALSE。

基本上找到colA中所有数字的平均值,其中[B(i)= TRUE& B(i-1)= FALSE]。

当然,你会省略colA&中的第一个值。 colB,因为没有什么可以比较它。

2 个答案:

答案 0 :(得分:2)

如果你的Excel版本是2007或更新版本,AVERAGEIFS function应该可以轻松解决这个问题。

AVERAGEIFS( &lt; average_range&gt;,&lt; criteria_range1&gt;,&lt; criteria1&gt;,&lt; criteria_range2&gt;,&lt; criteria2&gt; < /强> ...)

&lt; average_range&gt; 和一个或多个 - &lt; criteria_rangeX&gt;所用范围的大小必须相同,但它们不必是相同的行或列。如果您在第二行开始平均范围和第一个标准范围,并将第二个标准范围从第一行偏移到第一行(同时保持相同的行数),您应该会收到您正在寻找的结果。

=AVERAGEIFS(A2:A100, B2:B100, TRUE, B1:B99, FALSE)

答案 1 :(得分:1)

您可以从这段代码开始:

Sub Average()
    Dim r As Range
    Dim sum As Double
    Dim nbr As Double
    Set r = Selection
    For Each cell In r.Cells
    If CBool(cell.Offset(0, 1).Value) And Not CBool(cell.Offset(-1, 1).Value) Then
    sum = sum + cell.Value
    nbr = nbr + 1
    End If
    Next
    av = sum / nbr
    MsgBox ("Your average is " & av)
    End Sub

前提条件:

  • 您需要选择您的值范围。
  • 确保选择上方有一行,以便偏移正常运行
  • 添加条件以在nbr等于零时处理nbr

最终结果:

enter image description here