我知道标题令人困惑,但用一句话概括问题并不容易,所以请耐心等待。
我在Excel中有两列,A列包含实数,B列包含TRUE或FALSE的布尔值。我想获得A列中每个值的平均值,其中B中的相应单元格为TRUE,上面的单元格为FALSE。
基本上找到colA中所有数字的平均值,其中[B(i)= TRUE& B(i-1)= FALSE]。
当然,你会省略colA&中的第一个值。 colB,因为没有什么可以比较它。
答案 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
前提条件:
最终结果: