2024年4月23日发(作者:)
计算过去一段时间的销售额
之前我们有推送过计算过去一段时间数的文章,介绍了一个时间智能函数。我们都知道运用时间智能函数需要有完整的日期表,
那么如果在没有连续日期的情景下,例如数据只具体到月份的数据时,我们应该如何计算过去某段时间的值呢?
今天的这篇文章,我们就来介绍在没有连续日期,无法使用时间智能函数的情况下,应该如何解决这个问题。
先是我们的源数据,我们主要讨论销售场景,数据包括订单编号,下单月份,产品,金额和客户:
我们要实现的是:在某个具体的月份计算出该月份之前几个月的销售额之和,例如我们在每天展示过去前三个月不包括当月的销
售额之和。具体的例子就是需要在
2015
年
7
月的时间点显示
6
月、
5
月、
4
月的销售额之和,依此每月都要显示过去三个月的销售
额之和。
问题的难点在于要去掉图表上的时间对数据的筛选,同时还要保证动态的求和,计算的都是每天的前三个月。
首先我们能想到的是肯定要用
CALCULATE
来实现,那我们先来写一个:
然后需要做的就是清除掉图表上的时间对计算时的筛选,我们首先能想到的就是
ALL
函数:
使用
ALL
函数,使整张销售记录表都可以不被图表上的时间所筛选,随后我们就要写来动态限制计算销售额范围的时间了,我们
要实现的是取出一个日期,选择小于它,同时还要大于等于它减
3
个月。理清这个逻辑,我们就可以写公式啦!
在写公式之前,我们需要准备一个可以用来计算时间的序号,从
2014
年开始每月递增的序号,写法如下:
Mark =
(LEFT('calendar'[
月
],4)-2014)*12+RIGHT('calendar'[
月
],2)
我们的时间表就包括以下两列:
然后就可以开始写公式啦:
来验证一下:
公式里为什么会出现
MAX
?关于这点,我们使用
MAX
函数的目的是为了选择出来
“
一个月份
”
,这一个
MAX
的月份在实际我们画
图的时候,就是时间轴上的那一个时间。在这里除了可以使用
MAX
函数来实现这个效果,我们还可以使用
MIN
函取最小值。这里
的
“
最大值
”
和
“
最小值
”
,其实指的都是同一个月。
MAX = MAX('calendar'[Date])
MIN = MIN('calendar'[Date])
那么如果在刚才的公式里,我们使用的是
MIN
而不是
MAX
,结果会有什么不一样呢?
我们可以看到两个公式对应的每天的数据都是一致的,区别在于最后的总计。
使用
MIN
公式的总计值是当前所选时间范围最小的
2015
年
4
月的过去三个月的销售额之和,而使用
MAX
公式的总计值是当前
所选时间范围最大的
2015
年
7
月的过去三个月的销售额之和。
掌握这个计算逻辑之后,你有没有想到哪些适用场景呢?欢迎后台踊跃发言
~
发布者:admin,转转请注明出处:http://www.yc00.com/web/1713856461a2332120.html
评论列表(0条)