求Google Sheets中基于姓名动态累加计算E列余额的公式
Google Sheets 按姓名连续行动态累加余额公式
方法1:使用BYROW+LET函数(推荐,逻辑清晰)
在E2单元格输入以下公式,按回车即可自动填充整列:
=BYROW(B2:B, LAMBDA(row_val, LET( current_row, ROW(row_val), current_name, row_val, prev_name, IF(current_row=2, "", INDEX(B:B, current_row-1)), prev_bal, IF(current_row=2, 0, INDEX(E:E, current_row-1)), current_cd, INDEX(C:C, current_row)-INDEX(D:D, current_row), IF(current_name=prev_name, prev_bal+current_cd, current_cd) ) ))
逻辑说明:
BYROW遍历B列每一行数据,逐行处理LET定义变量简化公式,避免重复引用- 判断当前行姓名与上一行是否相同:
- 相同则用上一行余额加上当前行的「借出-归还」
- 不同则直接取当前行的「借出-归还」作为初始余额
方法2:使用SCAN函数(更简洁的数组累加)
在E2单元格输入以下公式:
=SCAN(0, B2:B, LAMBDA(acc, name, IF(name <> INDEX(B:B, ROW(name)-1), INDEX(C:C, ROW(name))-INDEX(D:D, ROW(name)), acc + INDEX(C:C, ROW(name))-INDEX(D:D, ROW(name)) ) ))
逻辑说明:
SCAN函数负责逐行累加,acc代表上一行的累计余额- 每次判断当前姓名与上一行是否一致,一致则累加,不一致则重置为当前行的「借出-归还」
注意事项
- 确保表头在第1行,数据从第2行开始
- 如果表格有空白行,公式会自动跳过(空白姓名会被视为新姓名,重置计算)
内容的提问来源于stack exchange,提问作者Milen Ninan
相关产品推荐
相关产品推荐

