Google Sheets使用ARRAYFORMULA基于另一字段值增量单元格值的问题
Google Sheets 组号自动生成ARRAYFORMULA解决方案
原有方案问题说明
- 第一个公式的问题:直接基于行偏移计算组号,没有统计已出现的新组(即B列值为1的单元格)数量,当存在多行同组的情况时,行偏移的增长速度会超过组号的增长速度,导致后续新组编号偏大。
- 第二个公式的问题:在目标列的公式中直接引用目标列自身的单元格,触发了循环引用,导致表格不停重算、界面闪烁。
正确实现方案
直接在A4单元格粘贴如下公式即可,不需要下拉填充,会自动向下溢出计算所有行的组号,B列未输入内容的行自动留空:
=ARRAYFORMULA(IF(B4:B="",,SCAN(0, B4:B, LAMBDA(acc, curr, IF(curr=1, acc+1, acc)))))
公式逻辑说明
SCAN函数会从B4开始逐行遍历B列的取值,初始累加值acc设为0- 每遇到B列取值为1的行,就给累加值加1,代表进入新的分组
- 遇到B列取值大于1的行,累加值保持不变,代表同组延续
- 外层
IF判断过滤B列为空的行,避免产生多余的0值 ARRAYFORMULA保证公式自动作用于整列,不需要手动下拉填充
完全符合你给出的预期输出:当B列输入为1、1、1、2、3、1、1时,A列自动输出1、2、3、3、3、4、5。
内容的提问来源于stack exchange,提问作者user1015196
相关产品推荐
相关产品推荐

