You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:31:04