如何查找区域中首个累计和≥0的单元格(Excel/Google Sheets)
查找横向数据中首个累计和≥0的单元格
适用Excel 365/Google Sheets的动态数组公式
如果你的数据是横向排列(比如某一行的连续单元格),可以用SCAN函数计算逐列累计和,再匹配第一个满足≥0的位置:
=INDEX(数据范围,MATCH(TRUE,SCAN(0,数据范围,LAMBDA(a,b,a+b))>=0,0))
举个例子,假设数据在B2:F2,公式就是:
=INDEX(B2:F2,MATCH(TRUE,SCAN(0,B2:F2,LAMBDA(a,b,a+b))>=0,0))
SCAN(0, 数据范围, LAMBDA(a,b,a+b)):从初始值0开始,依次累加每个单元格的值,生成累计和数组MATCH(TRUE, ...>=0, 0):找到累计和数组中第一个≥0的位置INDEX:根据位置返回对应单元格的值
旧版Excel兼容公式
如果用的是不支持动态数组的旧版Excel,用数组公式实现:
=INDEX(B2:F2,MATCH(TRUE,MMULT(TRANSPOSE(ROW(B2:F2)^0),--(COLUMN(B2:F2)>=TRANSPOSE(COLUMN(B2:F2))))*B2:F2>=0,0))
输入时需按Ctrl+Shift+Enter触发数组计算。
Google Sheets替代方案
除了上述动态数组公式,也可以用ARRAYFORMULA结合SUMIF实现:
=INDEX(B2:F2,MATCH(TRUE,ARRAYFORMULA(SUMIF(COLUMN(B2:F2),"<="&COLUMN(B2:F2),B2:F2))>=0,0))
使用时只需将公式中的B2:F2替换成你实际的横向数据范围即可。
内容的提问来源于stack exchange,提问作者dieuts
相关产品推荐
相关产品推荐

