应收账款管理是企业财务管理的重要环节,而账龄分析则是评估应收账款质量的关键手段,本篇文章介绍如何在PowerBI中实现基于账龄的未还款金额计算。
问题描述
为分析各客户的还款情况,现在需要按账龄来统计各客户的未还款金额,请自行建模完成计算,并确保总计正确。
其中,统计的日期节点为:2025/7/15,账龄指的是统计时的日期与借款日期之间的间隔天数,并且每笔借款允许部分还款。
具体问题如下图所示:
本案例的初始数据如下:
借款记录:
日期 | 客户 | 凭据编号 | 借款金额 |
---|---|---|---|
2025年7月10日 | A | 1 | 6000 |
2025年1月6日 | A | 2 | 7000 |
2025年2月19日 | A | 3 | 6000 |
2025年3月8日 | A | 4 | 6500 |
2025年2月5日 | B | 5 | 3500 |
2025年5月15日 | B | 6 | 3000 |
2025年6月30日 | B | 7 | 4000 |
2025年7月5日 | B | 8 | 2000 |
2025年7月16日 | B | 9 | 3000 |
2025年3月26日 | C | 12 | 3000 |
2025年4月29日 | C | 13 | 4000 |
2025年5月30日 | C | 14 | 5000 |
2025年7月21日 | C | 15 | 3500 |
2025年6月10日 | B | 16 | 500 |
还款记录:
日期 | 客户 | 凭据编号 | 还款金额 |
---|---|---|---|
2025年7月14日 | A | 1 | 2000 |
2025年7月17日 | A | 1 | 3000 |
2025年2月19日 | A | 2 | 7000 |
2025年4月10日 | A | 4 | 6500 |
2025年7月5日 | B | 5 | 2000 |
2025年7月10日 | B | 6 | 3000 |
2025年5月30日 | C | 12 | 2000 |
2025年7月17日 | C | 13 | 3000 |
2025年7月18日 | C | 13 | 1000 |
2025年6月13日 | B | 16 | 500 |
账龄划分:
序号 | 账龄 | 最小值 | 最大值 |
---|---|---|---|
1 | 0-7天 | 0 | 7 |
2 | 8-14天 | 8 | 14 |
3 | 15-30天 | 15 | 30 |
4 | 31-60天 | 31 | 60 |
5 | 61-90天 | 61 | 90 |
6 | 超90天 | 91 | 999999999999999999 |
若需其它辅助表等,可自行创建并建模。
解题要点
本案例的解题思路比较直观,先找出对应客户的借款记录,然后从中找出对应账龄区间的记录,再汇总即可得到总借款金额,最后再减去已还款部分即可。
需要注意的是,借款与还款的发生日期要小于等于统计日期,在统计日期之后的记录不应纳入计算。
解决方案
首先,数据模型如下图所示:
然后,创建如下度量值:
未还款金额 =
VAR CalDate = dt"2025-7-15"
RETURN
CALCULATE(
COALESCE(SUM('借款记录'[借款金额])-SUM('还款记录'[还款金额]),0),
FILTER(
'借款记录',
VAR Interval = DATEDIFF('借款记录'[日期],CalDate,DAY)
RETURN
NOT ISEMPTY(FILTER('账龄划分','账龄划分'[最小值]<=Interval && Interval<='账龄划分'[最大值]))
),
'还款记录'[日期]<=CalDate
)
然后创建一个矩阵,将借款记录表的客户字段作为行标签,将账龄字段作为列标签,再将上面的度量值放入矩阵的值字段即可,结果如下图所示:
总结
以上方法仅供参考,若有更优雅的解决方案,欢迎留言讨论,或者加入我们的技术交流群,一起享受这种思维碰撞的快乐吧!
PBI/DAX技术交流群(QQ):344353627