跨间隔列统计连续True值的最大数量
解决Excel间隔列连续True值最大个数统计问题
需求:在每行的H列,统计跳过空白列(B、D、F)后,A、C、E、G列中连续出现True的最大次数,示例如下:
| Column A | Column B | Column C | Column D | Column E | Column F | Column G | Column H |
|---|---|---|---|---|---|---|---|
| True | True | True | False | 3 | |||
| True | True | False | True | 2 | |||
| False | True | False | True | 1 |
方案1:兼容所有Excel版本的数组公式
在H2单元格输入以下公式,按Ctrl+Shift+Enter(旧版Excel需手动触发数组计算,新版Excel会自动识别):
=MAX(FREQUENCY(IF(A2:G2=TRUE,COLUMN(A2:G2)),IF(A2:G2=FALSE,COLUMN(A2:G2))))
公式逻辑:
IF(A2:G2=TRUE,COLUMN(A2:G2)):提取当前行中所有值为True的单元格列号,空白列因不满足=TRUE自动被忽略。IF(A2:G2=FALSE,COLUMN(A2:G2)):提取当前行中所有值为False的单元格列号,作为分隔连续True组的标记。FREQUENCY(...):计算每个连续True组的元素个数(即连续True的次数)。MAX(...):从所有连续组的次数中取最大值,得到最终结果。
方案2:适用于Excel 365/2021的动态数组公式
如果使用支持动态数组的Excel版本,可直接指定目标列(A、C、E、G),用更简洁的公式:
=MAX(SCAN(0,A2,C2,E2,G2,LAMBDA(a,v,IF(v=TRUE,a+1,0))))
公式逻辑:
SCAN(0, A2,C2,E2,G2, LAMBDA(a,v,IF(v=TRUE,a+1,0))):遍历目标列的每个值,遇到True就累加计数,遇到False或空白则重置计数为0,生成一组连续计数结果。MAX(...):从计数结果中取最大值,即为连续True的最大次数。
扩展:自动适配所有间隔奇数列
如果需要统计的间隔列是所有奇数列(A、C、E、G...)且列数较多,可使用动态数组自动提取目标列,无需手动指定:
=MAX(SCAN(0,INDEX(2:2,SEQUENCE(ROUNDUP(COLUMNS(2:2)/2,0),,1,2)),LAMBDA(a,v,IF(v=TRUE,a+1,0))))
将公式中的2:2替换为具体行号即可应用到指定行,下拉填充可批量处理所有行。
内容的提问来源于stack exchange,提问作者The_Train
相关产品推荐
相关产品推荐

