ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 11946|回复: 8

[原创] 相对变量计算方法:环比和同比

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-3-16 11:52 | 显示全部楼层 |阅读模式
在DAX函数中没有专门一个表达同比或者环比,需要用嵌套的方法来实现。
算法解析:
通过第一部分,我们了解到同比和环比的计算方法,基本元素是本期数、上期数以及同期数,这三个都是绝对值,也就是说要计算本期的绝对值,以及临近周期的绝对值(环比需要的上期数据)、跨上一级的同一周期的绝对数(同比需要的绝对数),通过这个分析,其实要计算同比或者环比,我们只需要转换为计算这三个值,然后再通过简单的四则运算就可以计算出同比和环比。
先说说本期数据,按照月度来算,也就是说本月发生额,我们就可以想到使用时间智能函数中的TOTALMTD 函数,表示从月初到现在的表达式的和,表达式我们可以使用聚合函数SUM,就可以求出本期数据。
而上期数据,我们还是用月度来说明,如果说本月的数据是完整的一个月数据,那么上个月的数据,我们也可以借助时间智能函数,比如说PREVIOUSMONTH 函数,或者使用DATEADD 函数都可以。但是如果不是完整的月度日期,比如说本期数是1-15日,对应的上期数据应该是上个月的1-15日,如果使用PREVIOUSMONTH 函数返回的是上个月完整月份的数据,那和我们同比的概念就不一样了,即我们不能用15天的数据和上个月整月的数据做比较。因此就需要换另一种方法,我们首先要计算本期最后一天的日期,可以使用LASTDATE 函数,然后再用DATEADD函数,将这个日期往前退一个月,即DATEADD(LASTDATE (),-1,MONTH),返回就是上月本期最后一天的日期,最后再用TOTALMTD 函数的特点,即TOTALMTD(SUM(),DATEADD(LASTDATE (),-1,MONTH))就可以求得上个月1日至上个月和本期同一天日期一样的日期的表达式的和,即可以求出上期值。
而同期值,也可以使用上期值的求法,只是将MONTH换成YEAR即可,即TOTALMTD(SUM(),DATEADD(LASTDATE (),-1,YEAR))。
3、案例示范
我们用一个案例来说明一下这个嵌套函数的用法。
有如下图一组销售数据:
相对变量计算方法:环比和同比01.png


当对DATE字段降序排序时,我们看到最大的一天是2021年3月23日,即本期的日期不是满月日期数据。
首先我们先要创建几个度量值:


1、创建“销售额”度量值:
销售额:=SUM([SalesAmount_USD])
如下图所示:
相对变量计算方法:环比和同比02.png


2、创建“本期销售额”度量值:
本期销售额:=TOTALMTD([销售额],ResellerSales_USD[DATE])
效果如下图所示:




3、创建“上期销售额”度量值:
上期销售额:=TOTALMTD([销售额],DATEADD(LASTDATE(ResellerSales_USD[DATE]),-1,MONTH))
效果如下图所示:
相对变量计算方法:环比和同比03.png


4、创建“环比”度量值:
环比:=DIVIDE([本期销售额],[上期销售额])-1
效果如下图所示:
相对变量计算方法:环比和同比04.png


5、创建“同期销售额”度量值:
同期销售额:=TOTALMTD([销售额],DATEADD(LASTDATE(ResellerSales_USD[DATE]),-1,YEAR))
效果如下图所示:
相对变量计算方法:环比和同比05.png


6、创建“同比”度量值:
同比:=DIVIDE([本期销售额],[同期销售额])-1
效果如下图所示:
相对变量计算方法:环比和同比06.png


7、将创建的这几个度量值返回到透视表中展示,如下图所示:
相对变量计算方法:环比和同比08.png


我们验证一下这组数据的准确性,首先第一个销售额度量值为11,224,296,这个表示的SalesAmount_USD字段的总和,我们通过原始数据计算一下,如下图所示:
相对变量计算方法:环比和同比09.png


通过手动计算,这个值和我们度量值计算的是一样的。我们再验证一下同期值的数据,计算的是最近一个月从1号到当前日期的数据,即2021年3月1日至2021年3月23日的数据,度量值计算的结果是256,123,手动计算的结果如下图所示:
相对变量计算方法:环比和同比10.png


通过对比,我们得到的结果是度量值计算的结果和手动计算的结果是一致的,同期的度量值,我们也可以用这种方法来多对比,发现也是一致的,如下图所示:
相对变量计算方法:环比和同比11.png


也就验证了我们这种算法是正确的,不管当前的数据是不是满月的,都可以计算出环比和同比来。


环比和同比是日常分析中一组非常重要的指标,本期我们介绍的是在当期非满月的情况下的算法,希望可以帮到大家解决这个小的问题。

相对变量计算方法:环比和同比07.png

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-3-20 21:08 | 显示全部楼层
老师,如果同预算比,因为预算的年月,跟本期的年月是一样的,这改怎么调整公式?

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-3-21 09:30 | 显示全部楼层
zhouxiao 发表于 2018-3-20 21:08
老师,如果同预算比,因为预算的年月,跟本期的年月是一样的,这改怎么调整公式?

你的意思是说针对基期比?

TA的精华主题

TA的得分主题

发表于 2018-3-21 21:41 来自手机 | 显示全部楼层
little-key 发表于 2018-3-21 09:30
你的意思是说针对基期比?

是的,同预算比时,因为年月和当前都是一样的,公式好像不好写.你有什么更好的办法呢?谢谢.

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-3-22 08:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
zhouxiao 发表于 2018-3-21 21:41
是的,同预算比时,因为年月和当前都是一样的,公式好像不好写.你有什么更好的办法呢?谢谢.

那就设定固定值就行了

TA的精华主题

TA的得分主题

发表于 2018-3-23 11:14 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-10-15 16:28 | 显示全部楼层
哇,终于弄明白解决了工作问题,虽然没有系统学习过DAX

TA的精华主题

TA的得分主题

发表于 2019-12-6 11:36 | 显示全部楼层
你好,dateadd返回的是上月本期最后一天,比如看10月、11月环比,按公式计算的是10.1-10.30和11.1-11.30的环比,如果我希望按每个自然月整个月数量计算环比,需要怎么调整呢?就是10.1-10.31和11.1-11.30的环比。

TA的精华主题

TA的得分主题

发表于 2020-11-10 09:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
环比同比好方法,谢谢分享
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-24 10:22 , Processed in 0.053195 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表