(一) 通过添加列计算移动平均
表1
前提条件要点:日期列连续不中断
要求:计算5日平均值
1. 解题思路
- 计算5日平均值则只有在日期大于5日以后的,才会有5日均线
- 筛选出当前日期往上倒推5日的表,并计算金额的平均值
2. 函数思路
A. 计算均值的起始日期
因为日期是连续的,所以起始日应该是当天往前推第5天
'表1'[日期]>=Earlier('表1'[日期])-5)
B. 计算均值的结束日期
结束日期应该就是当前日期,这里会涉及到Earlier函数
'表1'[日期]<Earlier('表1'[日期])
C. 计算最早可达到条件的日期
我们要计算5日均线,那就必须要有5日的数据才可以用于计算
Calculate(LastnonBlank('表1'[日期],1),TopN(5,'表1'))
先筛选出最前的5行,然后取最后一天的日期。
3. 函数合并
既然3个条件都有了,那我们就可以直接写成公式:
if('表1'[日期]>Calculate(LastnonBlank('表1'[日期],1),
TopN(5,'表1')), //判断是否满足最小计算数量要求
Averagex(Filter('表1','表1'[日期]<Earlier('表1'[日期])
&&'表1'[日期]>=Earlier('表1'[日期])-5),
'表1'[金额]
),
Blank()
)
目标结果:
喜欢的别忘了点个赞咯!