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

求Google Sheet公式:计算递增数值序列的长度

解决方案:计算连续递增+1序列的长度

假设你的数据存放在A2:A14(对应给出的13个数值),以下两种方法可实现需求:

方法1:SCAN + FREQUENCY 组合(高效直观)

直接在B2单元格输入以下数组公式(无需下拉,自动填充):

=ArrayFormula(
  IF(A2:A="",,
    XLOOKUP(
      SCAN(1, A2:A, LAMBDA(current_group, current_val,
        IF(ROW(current_val)=2, current_group,
          IF(current_val=OFFSET(current_val,-1,0)+1, current_group, current_group+1)
        )
      )),
      SEQUENCE(MAX(SCAN(1, A2:A, LAMBDA(current_group, current_val,
        IF(ROW(current_val)=2, current_group,
          IF(current_val=OFFSET(current_val,-1,0)+1, current_group, current_group+1)
        )
      )))),
      FREQUENCY(
        IF(A2:A<>"", ROW(A2:A)),
        IF(A2:A<>"", IF(A3:A<>A2:A+1, ROW(A3:A)),)
      )
    )
  )
)

公式拆解:

  • SCAN生成组号:遍历A列数据,给每个连续递增序列分配唯一组号(比如21是组1,76是组2,23-26是组3)。
  • FREQUENCY计算组长度:通过识别断点(当前值+1≠下一个值的位置),用FREQUENCY统计每个组的行数,即序列长度。
  • XLOOKUP匹配长度:将每行的组号对应到对应组的长度,输出最终结果。

方法2:MMULT 矩阵乘法(逻辑清晰)

若偏好更直白的逻辑,可使用矩阵乘法直接计算每个位置到序列末尾的连续次数:

=ArrayFormula(
  IF(A2:A="",,
    MMULT(
      N(ROW(A2:A)<=TRANSPOSE(ROW(A2:A))*(A2:A+SEQUENCE(ROWS(A2:A),1,0)=TRANSPOSE(A2:A))),
      SEQUENCE(ROWS(A2:A),1,1)
    )
  )
)

逻辑说明:

  • 生成判断矩阵:检查当前行i的后续行j是否满足A[j] = A[i] + (j-i)(即连续+1)。
  • 用MMULT对每行符合条件的结果求和,得到当前位置所在序列的长度。

测试结果

针对你提供的数据集:21、76、23、24、25、26、62、63、47、30、31、32、45,两种方法都会输出:
1、1、4、4、4、4、2、2、1、3、3、3、1,完全匹配需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 17:19:55