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

如何在Google Sheets中使用ARRAYFORMULA引用同列单元格

Google Sheets 自动分类累计计数解决方案

核心公式

在目标列第2行输入以下公式,即可实现类别变化时重置计数、自动适配新增行的需求,无需手动调整范围:

=ARRAYFORMULA(IF(G2:G="",,COUNTIFS(G$2:G2, G2:G, ROW(G$2:G2), "<="&ROW(G2:G)) - 1))

公式原理

  • IF(G2:G="",, ...):跳过G列空白行,避免生成无效值
  • COUNTIFS(G$2:G2, G2:G, ROW(G$2:G2), "<="&ROW(G2:G)):统计从第2行到当前行内,与当前行G列值一致的行数
    • G$2:G2:混合引用锁定起始行,结束行随当前行动态扩展,确保只统计当前行及以上的范围
    • 第二个条件通过行号限制,避免跨范围统计
  • -1:将默认的1起始计数转为0起始,完全匹配你需要的IF(G2<>G1,0,B1+1)逻辑

方案优势

  • 无循环依赖:无需引用当前公式所在列的上一行结果,彻底避免循环错误
  • 自动扩展:公式引用的G2:G会自动适配新增行,不用手动修改范围
  • 性能稳定:相比迭代计算或整列引用,动态范围的COUNTIFS计算效率更高,不会拖慢表格

进阶方案(SCAN函数)

如果后续需要更复杂的累计规则,可使用新版Google Sheets支持的SCAN函数:

=ARRAYFORMULA(
  IF(G2:G="",,
    SCAN(0, G2:G, LAMBDA(acc, curr,
      IF(curr <> OFFSET(curr, -1, 0), 0, acc + 1)
    ))
  )
)
  • SCAN逐行遍历G列,acc存储上一次的计数结果
  • OFFSET(curr, -1, 0)获取当前行的上一行G列值,对比后决定重置计数或递增
  • 同样支持自动扩展,无循环依赖

内容的提问来源于stack exchange,提问作者Trashman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 22:30:48