一篇文章搞定按年、季、月、旬、周求和,超级实用,建议收藏备用
练习题062:按年、季、月、旬、周求和(函数题)答案
注意:
请仔细审题,本题要求用函数,而不是用透视表来解答。
一、按年求和
数据表格如下图,要求用函数求出各年份的金额
公式1:用SUMIFS多条件求和
这问题可以转化为一个多条件求和,比如:要求2017年的,那么就是对既大于2017年1月1日,又小于2017年12月31日的日期数据进行求和,因而,我们可以使用SUMIFS函数:
=SUMIFS($C$2:$C$33,$B$2:$B$33,">=2017/1/1",$B$2:$B$33,"<=2017/12/31")
此公式不能直接下拉填充,以计算出2018年、2019年的金额,我们可以用DATE函数来计算日期:
=DATE(E2,1,1),
将其代入到前面的公式,完整的公式为:
=SUMIFS($C$2:$C$33,$B$2:$B$33,">="&DATE(E2,1,1),$B$2:$B$33,"<="&DATE(E2,12,31))
公式2:用SUMPRODUCT进行数组运算
SUMPRODUCT函数是将数组进行相乘,然后求乘积的和,它可以进行数组运算,而不必按Ctrl+Shift+Enter,因而我们可以先计算出各单元格的年份是否为指定年份(如果是,其结果为true,相当于1,不是的话,其结果为FASLE,相当于0),然后将其与金额相乘,其乘积之和就是年份的金额之和。
公式为:
=SUMPRODUCT((YEAR($B$2:$B$33)=E2)*$C$2:$C$33)
二、按季度求和
1、用SUMIFS函数
本题就是要求按季度和年度求和,因而也是一个多条件求和,可用SUMIFS,在前面SUMIFS多条件按年求和公式的基础上,修改一下求和条件就是了。一季度是计算1月1日到3月31日,二季度是计算4月1日到6月30日。。。。。
假设季度数是N,那么该季度起始月就是3*N-2,季度起始日用DATE函数
DATE(2018,3*N-2,1)
该季度截止月就是3*N,由于截止月最后一日不固定,有些是30,有些是31,不用简单的用DATE函数,还需套用计算月末最后一天的EOMONTH函数(End+Of+Month),因而其公式为:
=SUMIFS($C$2:$C$33,$B$2:$B$33,">="&DATE(F$10,$E11*3-2,1),$B$2:$B$33,"<"&EOMONTH(DATE(F$10,$E11*3,1),0))
2、用SUMPRODUCT函数
有一个比较碰巧的规律:
假设各月份为M,求2的M次方,其结果的字符数,刚好等于月份所在的季度数
因而,我们可以用LEN(2^MONTH($B$2:$B$33))来计算B列各月的季度数,用SUMPRODUCT来计算各季度的合计,其公式为:
=SUMPRODUCT((LEN(2^MONTH($B$2:$B$33))=$E2)*(YEAR($B$2:$B$33)=F$1)*$C$2:$C$33)
三、按月求和
只要理解了前面的公式,按月求和就比较简单了,公式分别为:
=SUMPRODUCT((MONTH($B$2:$B$14)=E2)*$C$2:$C$14)
=SUMIFS($C$2:$C$14,$B$2:$B$14,">="&DATE(2017,E2,1),$B$2:$B$14,"<"&DATE(2017,E2+1,1))
=SUMIFS($C$2:$C$14,$B$2:$B$14,">="&DATE(2017,E2,1),$B$2:$B$14,"<="&EOMONTH(DATE(2017,E2,1),0))
四、按旬求和
公式:
上旬1-10日:
=SUMIFS($C$2:$C$46,$B$2:$B$46,">="&DATE(2018,$F2,1),$B$2:$B$46,"<"&DATE(2018,$F2,11))
中旬11-20日:
=SUMIFS($C$2:$C$46,$B$2:$B$46,">="&DATE(2018,$F2,11),$B$2:$B$46,"<"&DATE(2018,$F2,21))
下旬:21-月末
=SUMIFS($C$2:$C$46,$B$2:$B$46,">"&DATE(2018,$F2,20),$B$2:$B$46,"<="&EOMONTH(DATE(2018,$F2,1),0))
读者QQ群的读友031 - 硬币(37125126) 给出的一体化公式:
=SUMPRODUCT((MONTH($B$2:$B$46)=$F2)*(TEXT(DAY($B$2:$B$46),"[>20]下旬;[>10]中旬;上旬")=G$1)*$C$2:$C$46)
五、按周求和
Excel里有个WEEKNUM函数可以计算某天在一年的第几周,可惜的是它不能用于数组公式,要不然,可以用它配合SUMPRODUCT来求和。
我们只有另辟蹊径:
要计算第几周,可以用一个比较笨的方法,计算与基准日的天数是七的多少整数倍。
比如今年2018年的第一周是从1月1日(周一),那么我往前数七天,也就是2017年12月25日,以这天为基准日(12月都是31天,因而实际上都是取上一年的12月25日),然后将日期减基准日,天数再除七取整,就是周数了。
=INT((日期-"2017-12-25")/7)
扩展:
如果周数不是按上面的计算方法,而是按日历上在第几周,比如2017年1月1日,是周日,也就是在本年的第一周,1月2日是周一,应该算是本年的第二周。要按这个计算方法,适当调整基准日就是了,可以用2016年12月19日做基准日:
=INT((日期-"2016-12-19")/7)
这样计算出来的效果就与下面公式的结果相同:
=WEEKNUM(日期,2)
因而,计算第几周之和的公式为:
1、用SUMPRODUCT函数
=SUMPRODUCT((INT(($B$2:$B$19-"2017-12-25")/7)=F2)*$C$2:$C$19)
2、用SUMIFS
=SUMIFS($C$2:$C$19,$B$2:$B$19,">="&("2018-1-1"+7*(F2-1)),$B$2:$B$19,"<="&("2018-1-7"+7*(F2-1)))
上面的公式相对比较复杂,函数较差的朋友可能看不懂,看不懂没关系,将此文收藏,要用的时候,只要修改一下公式中的单元格,就可套用到工作中的表格。
如果觉得本文对你有帮助,欢迎转发分享,收藏备用!