基于前置/后置值及Column C条件的0/1连续组统计需求问询
基于前置/后置值及Column C条件的0/1连续组统计需求问询
嗨,我来帮你搞定这些0/1连续组的统计需求,全部用Excel公式就能实现,咱们一步步拆解:
一、统计「前置为1且对应Column C值≥指定阈值」的0组数量(你提到预期结果是4)
假设你的0/1数据在B列(从B2到B121,共120行),Column C是对应行的数值,阈值放在E1单元格(可自行调整位置)。我们需要找到每个符合条件的0组的起始位置——也就是当前行是0、上一行是1,且当前行C值达标,统计这样的起始点数量就是符合要求的0组总数。
用这个公式:
=SUMPRODUCT(--(B2:B121=0), --(B1:B120=1), --(C2:C121>=E1))
解释下各部分:
--(B2:B121=0):标记当前行是0的位置--(B1:B120=1):标记上一行是1的位置(确保0组前面是1)--(C2:C121>=E1):标记当前行C值≥阈值的位置
三个条件同时满足时,SUMPRODUCT会统计这样的行数,也就是符合要求的0组数量。
二、统计「后置为0」的1组数量(每个1组算1次)
同样基于B列的0/1数据,我们找每个1组的结束位置——当前行是1、下一行是0,统计这样的位置数就是1组的总数。
公式如下:
=SUMPRODUCT(--(B1:B120=1), --(B2:B121=0))
这个公式会自动识别每个1组的最后一行(因为下一行是0),每出现一次就计数1,正好对应1组的数量。
三、统计符合条件的0组内的单元格总数
如果需要统计所有属于「前置为1且C值达标」的0组里的单元格数量,用辅助列实现会更直观:
- 在D2单元格输入公式:
=IF(AND(B2=0, (B1=1 OR (B1=0 AND D1=1)), C2>=E1), 1, 0) - 把公式下拉到D121,这个辅助列会标记所有符合条件的0组单元格为1
- 最后用
=SUM(D2:D121)就能得到这些单元格的总数
如果不想用辅助列,也可以用数组公式(输入后按Ctrl+Shift+Enter确认):
=SUM(IF((B2:B121=0)*((B1:B120=1)+(B1:B120=0)*(OFFSET(B2:B121,0,2)=1))*(C2:C121>=E1),1,0))
不过辅助列的方式更不容易出错,也方便你检查标记是否正确。
备注:内容来源于stack exchange,提问作者Amr Ezzat
相关产品推荐
相关产品推荐

