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

Google Sheets累计求和接近30时输出行号并重置求和

累计求和趋近30时输出行号并重置(Google Sheets)

直接在C2单元格输入以下数组公式,自动处理整列:

=ARRAYFORMULA(IF(B2:B="",,LET(
  group_track, SCAN(0, B2:B, LAMBDA(prev, curr, IF(prev+curr>30 AND ABS(prev+curr-30)<ABS(prev-30), 0, prev+curr))),
  prev_track, VSTACK(0, group_track),
  curr_total, group_track+B2:B,
  trigger, (curr_total>30)*(ABS(curr_total-30)<ABS(prev_track-30)),
  IF(trigger, ROW(B2:B), "")
)))

工作原理

  • group_track通过SCAN函数追踪累计和:如果加上当前Length值后,新总和与30的差距比之前的累计值更小,就重置累计为0,否则继续累加。
  • prev_track存储上一行的累计值,curr_total计算当前行加入后的总和。
  • trigger判断当前行是否满足条件:总和超过30,且新总和比之前的累计值更接近30。
  • 满足条件时输出当前行号,其余行留空。

匹配你的示例需求

如果你的逻辑是只要累计和超过30就输出当前行号(即使之前的累计值更接近30),修改公式如下:

=ARRAYFORMULA(IF(B2:B="",,LET(
  group_track, SCAN(0, B2:B, LAMBDA(prev, curr, IF(prev+curr>30, 0, prev+curr))),
  trigger, group_track+B2:B>30,
  IF(trigger, ROW(B2:B), "")
)))

这个版本会在累计和超过30时立刻输出当前行号,随后重置累计,完全匹配你给出的示例:行4累计到36时输出行号4,之后重新开始累计。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 04:10:32