Google Sheets中如何从最后非空单元格向左依次减至首个单元格?
解决方案
针对你需要从动态更新的C列及右侧列中,取最右侧非空值并依次减去左侧所有单元格值的需求,可以用以下公式实现:
单行列公式(以第2行为例)
在目标单元格(如H2)输入:
=LET( last_pos, XMATCH(TRUE, C2:2<>"", 0, -1), last_val, INDEX(C2:2, last_pos), sum_left, SUM(C2:OFFSET(C2, 0, last_pos - 2)), last_val - sum_left )
批量多行公式(自动处理所有行)
如果需要批量处理多行数据(如从第2行到第100行),可以用BYROW函数实现自动计算:
=BYROW(C2:C100, LAMBDA(row, IF(COUNTA(row) = 0, "", LET( last_pos, XMATCH(TRUE, row<>"", 0, -1), last_val, INDEX(row, last_pos), sum_left, SUM(INDEX(row, 1):INDEX(row, last_pos - 1)), last_val - sum_left ) ) ))
公式说明
XMATCH(TRUE, row<>"", 0, -1):从右往左查找当前行中第一个非空单元格的位置,确保能动态适配新增的列INDEX(row, last_pos):提取最右侧的非空单元格值SUM(INDEX(row,1):INDEX(row, last_pos-1)):计算从C列开始到最右侧非空单元格前一列的所有数值总和- 最终通过
last_val - sum_left得到“最右值依次减去左侧所有值”的结果(等价于最右值减去左侧所有值的总和)
内容的提问来源于stack exchange,提问作者EagleEye
相关产品推荐
相关产品推荐

