很多给客户做财务数据分析的小伙伴都知道一个名词叫财年,也叫财经年度,很多公司的会计结算都是以财经年为单位来进行的,而非自然年。在我国一个财年是从每年的一月一日到十二月三十一日,与自然年日历重合,进行数据分析是使用常规的日历表即可。
但是很多国际的财年是从每年的六月一日到第二年的五月三十一日,或者从每年的九月一日到第二年的八月三十一日。这就使得财经年与自然年不匹配,不能使用自然年日历上的年和季度做财务数据分析。要解决该问题,就需要创建一个财年日历表。
以美国的Fiscal Year(从7月1日到第二年6月30日)要求为例,对下图自然日历创建一个财年日历表,可以以原始的自然年日历表为基准,通过对当前月份做运算处理来获得财年信息。
想创建两个计算列将原始Date中的Year和Month提取出来:
Year = YEAR('Calendar'[Date])
Month = FORMAT('Calendar'[Date],"M")
之后可以通过判断当前月份是否小于等于6来获得财年信息。
FYear = IF('Calendar'[Month]<=6,'Calendar'[Year],'Calendar'[Year]+1)
在此基础上可以使用下面公式计算财政月即季度。
FMonth = IF(MOD('Calendar'[Month]+6,12)>0,MOD('Calendar'[Month]+6,12),12)
FQuarter = "Q"&ROUNDUP('Calendar'[FMonth]/3,0)
如果有需要,还可以利用下面公式将月份从数字形式转译成文字形式:
FMonth-Text = FORMAT(DATE('Calendar'[FYear],'Calendar'[FMonth],DAY('Calendar'[Date])),"MMMM")
上面这种以某个月起始日期作为财年计算开始单位的情况处理比较简单,只要通过月份的增减即可。还有一些公司的会计计算方式比较特别,会以某个月的中间点作为财年计算的起点。
例如:
要对这种数据进行处理,思路是将当前日期按照自定义的财年季度进行调整,例如定义2月20日是Q1的开始时间,则可以将当前自然年2月20日-50天,调整为1月1日,然后获取该日期对应的季度数即可。需要注意的是,7月份有31天,8月份也有31天,需要以7月30日为分界线,之前的数据-50天进行调整,而之后的数据-51天进行调整,以便将Q3的起始时间定在8月21日。
公式如下:
NewQuarter = "Q"&ROUNDUP(MONTH(IF('Calendar'[Month]<=7,'Calendar'[Date]-50,'Calendar'[Date]-51))/3,0)
与该日历表关联的数据都可以使用这个新的财年季度进行数据计算