Power BI财务应用:应收账款账龄分析
应收账款管理是财务管理的一项重要内容,为了随时了解客户的欠款情况,对应收账款进行账龄分析表是一种基本分析方法,这篇文章就先介绍一下如何利用PowerBI,自动生成应收账款账龄表。
假设有一张常见的应收账款明细表,记录了每个客户的每月应收发生额和回款金额等数据,如下图:
根据这个明细表,如何计算出每个客户的账龄分布情况,比如30天内的应收账款有多少、半年以上的账款有多少、一年以上的应收账款有多少……?
下面就来看看PowerBI如何实现这种分析。
1、建立数据模型
虽然数据表只有一个表,但是为了分析的需要,我们应建立对应的维度表,在这个例子中,因为需要按客户和时间分析,所以至少应该建立客户表和日期表。
并且为了能够把应收余额分解到不同的账龄中,还必选建立一张账龄分组的辅助表,这里假定按这6种账龄类型,制作账龄表如下:
然后将客户表、日期表与应收明细表建立关系,账龄分组表无需与应收明细表建立关系,模型图如下:
关于日期表和辅助表的制作请参考:
2、利用DAX生成账龄分布表
基本思路是,先将每个客户的应收余额,分配到实际发生的期间,然后根据发生期间来放置到对应的账龄中。
首先建立两个基础度量值,来计算客户的应收发生额和应收余额:
应收 本期发生额 = SUM('应收明细表'[本期发生额]) 应收 本期余额 = SUM('应收明细表'[期末余额])
截至到现在的应收余额就是最后一个记账日期对应的余额,但每个客户的最后记账日期并不一致,所以需要先计算出最后的记账日期:
最后记账日期 = CALCULATE( MAX('应收明细表'[记账日期]), ALLEXCEPT('应收明细表','客户表'[客户名称]) )
根据最后记账日期,就可以计算出应收余额:
应收 期末余额 = CALCULATE( [应收 本期余额], FILTER( ALL('日期表'), '日期表'[日期]=[最后记账日期]) )
然后根据应收余额和应收发生额,来计算每期应收未收的金额是多少,度量值如下:
其中的计算逻辑,已用注释说明,熟悉应收的同学应该很容易理解,如果是按月查看客户的应收未收金额,就可以将年度月份放进来:
有了每期的未收金额,就可能很轻松计算出账龄分布情况了,其实就是分组分析(可参考:Power BI 数据分析应用:客户购买频次分布):
做个矩阵,将客户放到【行】,账龄放到【列】,上面的度量值作为【值】,就能自动计算出每个客户的应收账龄分布情况了:
这里有问题是,总计金额不正确,可以单独修正一下,
把这个修正后的度量值放到矩阵中,就是正确的结果了:
这样就自动生成账龄分布情况,如果应收明细表数据有更新,只需要点击刷新,即可自动完成每个客户的应收账龄分布,一目了然的掌握每个客户的欠款情况,关于账龄分组,可以根据实际需要来调整。
其实账龄分析也是一种分组分析,掌握了分组的逻辑,实现起来并不难,上面的这些度量值的逻辑需要你仔细理解,首先应该先想清楚业务的计算逻辑,然后学会用DAX来表达。
很多人不会用PowerBI做复杂点的数据分析,其实多数情况下并不是PowerBI或者DAX太难,恰恰是因为没有真正想清楚业务的计算逻辑。能不能先分解问题,并用语言描述出来计算逻辑非常关键。
老会员如果已经到期或者即将到期,也可以扫码使用会员专属5折续费卡: