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

我知道这个标题很混乱,但用一句话来总结这个问题并不容易,所以我很担心。

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

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

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

一个AVERAGEIFS函数应该照顾这轻松提供您的Excel版本是2007年或更新。

AVERAGEIFS( <average_range>,<criteria_range1>,<criteria1>,<criteria_range2>,<criteria2> …)

用于<average_range>和一个或多个 – <criteria_rangeX>的范围的大小必须相同,但不必是相同的行或列。 如果你在第二行开始你的平均范围和第一个标准范围,并将你的第二个标准范围偏移一行到第一行(同时保持相同的行数),你应该收到你正在寻找的结果。

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

你可以从这个代码开始:

 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 

前提条件:

  • 你需要select你的价值范围。
  • 确保你的select上面有一行,所以偏移量可以正常工作
  • 添加一个条件来处理nbr,当它等于零

最终结果:

在这里输入图像说明