案例精讲学习数组公式

关于数组,我们已经写了一篇【Excel数组入门之计算规则】,没有基础的同学一定要先读一下。今天正好有一个案例,我们来巩固一下!
需求:根据月份,求所在季度的金额合计

这个问题的处理思路,我们可以先聊一下,首先是如何根据月份判断季度,有了季度,我们就可以得到对应季度的最后一个月,然后往前推两个月,共三月的金额合计即可!我们一个一个处理!
思考1:如何根据月份求季度
根据月份求季度的公式有很多,这里我们推荐一种简单的写法!
=LEN(2^SUBSTITUTE(E1,"月",""))

可能很多同学,看到公式都无法理解,所以我们有必要讲一下~!
▼ 季度推导过程

其实这里更多用到的是数值的特殊性,2^月份的结果的位数正好对应的季度!比如4~6月,16,32,64,都是2位,也就是第二季度!其他同理!
思考2:所在季度的全部月份
得到季度,我们就可以得到对应季度最后一个月的月份季度*3,对应的月份怎么写呢?也就是最后一个月,依次-0,-1,-2!写到公式就是-{0,1,2}
这个看完数组基础篇,你应该可以理解了
=LEN(2^SUBSTITUTE(E1,"月",""))*3-{0,1,2}
▼ 2月对应的数据

▼ 7月对应的数据

有了月份,其实我们就可以使用SUMIF求对应月份的金额合计了
思考3:SUMIF第二参数使用数组计算结果会怎么样?
我们直接把上面的月份作为SUMIF的求和条件,这里就是第二参数常量数组用法!
=SUMIF(A:A,(LEN(2^SUBSTITUTE(E1,"月",""))*3-{0,1,2})&"月",B:B)
上面的公式,其实就是
=SUMIF(A:A,{"9月","8月","7月"},B:B)

从图中,你会发现结果其实是3月,分别对应的是9、8、7三个月的数据,形成的是内存数组,我们要的结果,就是要把上面的结果再求和!
思考4:内存数组如何求和?
其实内存数组的一个特点,就是可以进一步参与计算,所以我们可以直接对上面的公式进行求和,简单点,我们可以使用SUMPRODUCT
▼最后公式
=SUMPRODUCT(SUMIF(A:A,(LEN(2^SUBSTITUTE(E1,"月",""))*3-{0,1,2})&"月",B:B))

小结:
1、思路和学习函数公式更重要
2、复制的公式,从来都不是一蹴而就的,而是根据思路,分解书写组合而成
3、数组是函数进阶的门槛,想要有质的突破,这一关不过不行~
今天我们就先到这里,希望你不仅学会了写法,同时也掌握分析问题的思路~
创作不易,感谢您的(收藏、点赞、在看、转发)
点击卡片,关注小编,干货不停更