如何计算可自定义调整的欠款余额?Excel公式修复需求
计算员工欠款金额的Excel公式(支持Adjust调整值)
需求:创建Excel公式计算员工当前欠款金额,需支持Adjust调整值——按Code编号顺序生效,以Adjust值作为新的欠款基准,忽略之前所有计算记录。
数据表格
| Code | Name | Employee | Value |
|---|---|---|---|
| 1 | Loan | Jhon | $3,000 |
| 2 | Payment | Jhon | 600 |
| 3 | Payment | Jhon | 300 |
| 4 | Payment | Jhon | 200 |
| 5 | Payment | Jhon | 700 |
| 6 | Payment | Jhon | 216 |
| 7 | Adjust | Jhon | 216 |
| 8 | Loan | Jhon | 50 |
| 9 | Payment | Jhon | 100 |
现有公式问题
当前使用的公式未考虑Code编号顺序,无法得到正确结果:
=IFERROR(INDEX(D:D,MATCH("Adjust",B:B,0))+SUMIF(OFFSET(B2,MATCH("Adjust",B:B,0),0),"Loan",OFFSET(D2,MATCH("Adjust",B:B,0),0))-SUMIF(OFFSET(B2,MATCH("Adjust",B:B,0),0),"Payment",OFFSET(D2,MATCH("Adjust",B:B,0),0)),SUMIF(B:B,"Loan",D:D)-SUMIF(B:B,"Payment",D:D))
预期结果为166,但该公式未识别第8行的Loan值,导致输出错误。
修正后的公式
=IFERROR(INDEX(D:D,MAXIFS(A:A,B:B,"Adjust",C:C,"Jhon")) + SUMIFS(D:D,C:C,"Jhon",A:A,">"&MAXIFS(A:A,B:B,"Adjust",C:C,"Jhon"),B:B,"Loan") - SUMIFS(D:D,C:C,"Jhon",A:A,">"&MAXIFS(A:A,B:B,"Adjust",C:C,"Jhon"),B:B,"Payment"), SUMIFS(D:D,C:C,"Jhon",B:B,"Loan") - SUMIFS(D:D,C:C,"Jhon",B:B,"Payment"))
公式逻辑说明
- 定位最新Adjust记录:用
MAXIFS(A:A,B:B,"Adjust",C:C,"Jhon")找到员工Jhon所有Adjust记录中最大的Code值(即最新的Adjust位置) - 获取Adjust基准值:通过
INDEX(D:D, 上述最大Code)提取该Adjust对应的Value作为欠款基准 - 计算Adjust后的收支:用
SUMIFS分别计算该Code之后的所有Loan总和、Payment总和,用基准值加Loan总和再减Payment总和得到当前欠款 - 无Adjust的情况:如果没有Adjust记录,直接计算该员工所有Loan总和减去Payment总和
结果验证
按照公式计算:Adjust值216 + 第8行Loan50 - 第9行Payment100 = 216+50-100=166,与预期结果一致。
内容的提问来源于stack exchange,提问作者Vic7152
相关产品推荐
相关产品推荐

