Google Sheets技术求助:单元格区域为空时重置连续班次计数
Google Sheets 连续班次计数(遇空白重置为0)解决方案
我明白你需要统计第6行中连续出现"NSC"或"SC"的班次数量,而且每当遇到空白单元格时,计数要直接重置为0——这确实是COUNTIF函数做不到的,因为它只会统计全局总数,不会识别空白的断点。
这里有两个实用的公式可以解决这个问题,你可以根据自己的习惯选择:
方法一:基于分组的连续计数
这个公式通过给每个空白后的区域分配独立分组,再统计每组内的有效班次数量:
=ARRAYFORMULA( LET( data, B6:6, valid, IF(REGEXMATCH(data, "^(NSC|SC)$"), 1, 0), reset, IF(data="", 1, 0), groups, SCAN(0, reset, LAMBDA(a,c, a + c)), counts, BYCOL(groups, LAMBDA(g, SUMIF(groups, g, valid))), IF(data="", 0, counts) ) )
使用步骤:
- 找到你想要显示连续计数的行(比如第7行),在该行的第一个单元格(比如B7)粘贴上述公式
- 公式会自动填充整行:
- 空白单元格对应的计数直接显示0
- "NSC"或"SC"单元格会显示从最近空白开始的连续有效班次数量
方法二:基于最近空白位置的区间统计
这个公式会先定位每个单元格左侧最近的空白位置,再统计该位置到当前单元格的有效班次:
=ARRAYFORMULA( LET( data, B6:6, cols, COLUMN(data), blanks, IF(data="", cols, ""), last_blank, SCAN(0, blanks, LAMBDA(a,c, IF(c<>"", c, a))), counts, BYCOL(cols, LAMBDA(col, COUNTIF(INDEX(data, , last_blank[col]:col), "NSC") + COUNTIF(INDEX(data, , last_blank[col]:col), "SC"))), IF(data="", 0, counts) ) )
效果说明:
比如第6行是 NSC → SC → 空白 → NSC,那么对应的计数行就会是 1 → 2 → 0 → 1,完全符合你要的重置逻辑。
内容的提问来源于stack exchange,提问作者Brian Walker
相关产品推荐
相关产品推荐

