计算 Excel 中组中值出现的频率

计算 Excel 中组中值出现的频率

我有一个值列表,想计算值超过 400 的次数,但如果下一行值也符合此条件,则不应计算在内。我想在这种情况下 COUNTIF 公式没用。请参阅附图以更好地理解。

在此处输入图片描述

答案1

在此处输入图片描述

在此图中,我将您的条件值放在单元格 A2 中。

在 E 到 H 列中,公式输入到第一行数据(电子表格中的第 3 行),然后复制到范围的底部。

E 列是获取上一行值的公式:

=IF(ISTEXT(B2),0,B2)

F 列中有一个公式,用于计算当前行(B 列)的值是否大于单元格 A2 中的条件,以及前一行(现在在 E 列)的值是否小于或等于单元格 A2 中的条件。此公式在大于条件的一组行开始的行中返回 1:

=IF(AND(E3<=$A$2,B3>$A$2),1,0)

G 列是 F 列值的累计总和:

=SUM($F$3:F3)

请注意,范围中的第一个引用以绝对引用为准。随着此公式向下复制,其求和的范围将不断扩大,最终得到 G 列中显示的值。

最后,在 H 列中,如果 B 列中的值大于单元格 A2 中的条件,我们将显示 G 列中的值:

=IF(B3>$A$2,G3,"")

如果您拥有最新版本的 Office 365,则可以将所有步骤合并为一个公式,该公式仅在上图中的单元格 I2 中输入:

=LET(
base,$A$2,
data,$B$3:$B$12,
prev,OFFSET(data,-1,0),
numprev,IF(ISTEXT(prev),0,prev),
grpchg,BYROW(CHOOSE({1,2},data,numprev),LAMBDA(r,IF(AND(INDEX(r,,1)>base,INDEX(r,,2)<=base),1,0))),
runsum,SCAN(0,grpchg,LAMBDA(a,b,a+b)),
output,IF(data>base,runsum,""),
output)

相关内容