Excel 365中如何利用列的最后非空值计算行内账户余额总和
Excel 365中如何利用列的最后非空值计算行内账户余额总和
嗨,针对你这个需求,Excel 365里有非常贴合的解决方案,完全不用手动复制旧数据(避免误导),直接用公式就能自动取每个账户的最后已知余额求和,我给你详细说下:
一、Total列的公式实现
假设你的数据结构是:
- A列:Date(表头A1)
- B列:Bank Account 1(表头B1)
- C列:Bank Account 2(表头C1)
- D列:Total(表头D1)
数据从第2行开始。
你可以在D2单元格输入以下公式,然后下拉填充到所有行:
=IFERROR(LOOKUP(2,1/(B$2:B2<>""),B$2:B2),0) + IFERROR(LOOKUP(2,1/(C$2:C2<>""),C$2:C2),0)
公式解释:
B$2:B2:锁定起始行($2),引用从第2行到当前行的Bank Account 1数据,下拉时会自动扩展范围到当前行。B$2:B2<>"":判断这个范围内的单元格是否非空,生成一个TRUE/FALSE的数组。1/(...):把TRUE转为1,FALSE转为#DIV/0!错误值(LOOKUP会自动忽略错误值)。LOOKUP(2,1/(...),B$2:B2):找小于等于2的最大值(也就是1)对应的位置,即最后一个非空单元格的余额。IFERROR(...,0):如果某一列到当前行还没有任何数据,就用0代替,避免出现错误值。
这个公式完全匹配你想要的结果:
- 01/01/2023:只有Bank Account 1有£100,总和=100+0=£100
- 05/01/2023:Bank Account 1最后余额还是£100,Bank Account 2新增£678,总和=100+678=£778
- 09/01/2023:Bank Account 1更新为£100,Bank Account 2余额不变,总和=100+678=£778
- 22/01/2023:Bank Account 1余额不变,Bank Account 2更新为£821,总和=100+821=£921
如果你偏好更直观的Excel 365专属函数,也可以用TAKE+FILTER的组合:
=IFERROR(TAKE(FILTER(B$2:B2,B$2:B2<>""),-1),0) + IFERROR(TAKE(FILTER(C$2:C2,C$2:C2<>""),-1),0)
FILTER(B$2:B2,B$2:B2<>"")筛选出当前列到当前行的所有非空值,TAKE(..., -1)取最后一个值,逻辑和上面一致,只是写法更易懂。
二、折线图优化建议
你要做包含三个系列的折线图,直接选中整个数据区域(包括表头)插入折线图即可。如果发现账户的折线在空值处断开,可以这样调整:
- 右键点击对应账户的折线 → 选择「数据系列格式」
- 在「系列选项」里找到「空单元格的显示方式」,选择「用前一个值填充」
这样账户的折线就会延续最后已知的余额,和Total列的逻辑保持一致,图表展示更准确。
备注:内容来源于stack exchange,提问作者Percy
相关产品推荐
相关产品推荐

