如何用公式生成累计值?Google Sheets递归错误求助
Google Sheets 累计列递归错误解决方案
问题根源
你尝试通过LET()+INDEX()+DECALER()实现H(x)=G(x)+H(x-1)的累计逻辑时触发递归错误,本质是公式间接引用了输出列(H列)自身,触发了Google Sheets的循环引用检测机制。
最优解决方案:使用SCAN函数
Google Sheets内置的SCAN()函数专门处理这类累计计算,无需担心递归问题。假设累计列从H10开始,G列为待累加数据源,直接在H10输入以下公式:
=SCAN(0, G10:INDEX(G:G, B5+9), LAMBDA(acc, val, acc + val))
公式拆解
SCAN(0, ...):设置初始累计值为0G10:INDEX(G:G, B5+9):根据B5的行数动态锁定累加范围(从G10到第B5+9行,对应B5行数据)LAMBDA(acc, val, acc + val):定义累加规则,每次将当前行的G列值val加到之前的累计值acc上
旧版兼容方案
如果你的Google Sheets版本不支持SCAN(),可以用ARRAYFORMULA()结合SUMIF()实现:
=ARRAYFORMULA(SUMIF(ROW(G10:INDEX(G:G, B5+9)), "<="&ROW(G10:INDEX(G:G, B5+9)), G10:INDEX(G:G, B5+9)))
原公式错误原因
原公式中DECALER(INDEX(G10:G,sq),-1,0)试图引用上一行的累计结果,但公式写在H列时,相当于间接调用H列自身数据,触发了递归循环检测,导致报错。
内容的提问来源于stack exchange,提问作者Mykel Leclerc Brisson
相关产品推荐
相关产品推荐

