如何使用SUMPRODUCT函数实现季度(年度月度)求和
核心思路是转化+拼接,让原始日期和季度日期两列数据可以匹配对比,进而对符合条件的进行求和。
一、首先对原始日期的拆解拼接:
原始日期如何提取年份:
=YEAR(日期),返回4位数的年份为常规的数字。
原始日期如何提取月份:
=MONTH(日期),返回1-12,且均为常规的数字。
月份怎么转化为季度:
=ROUNDUP(月份/3,0),这样可以把1-3转换为1;4-6转换为2;7-9转换为3;10-12转换为4。ROUNDUP(数字,小数位)函数向上取整;没有小数,3返回3;3.01返回4。
如何构造不同年份的季度:
①=YEAR(日期A)&ROUNDUP(MONTH(日期A数列)/3,0),如果日期A数列中有一个是2023/12/28,这个函数返回的就是20224(文本格式)。如果想变成常规数字再加一层=VALUE(①),本文文本对文本暂时不需要,如果季度日期是数字那需要转换。
二、接下来就看季度求和表时间这列形式
如果直接是20211,20234,这种格式那就可以直接匹配了。
假如是2023Q1
LEFT从左截取4位数拼接RIGHT从右截取1位数构成文本格式的20231
②=LEFT(2023Q1,4)&RIGHT(2023Q1,1),返回20231(文本格式)
假如是23Q1,②=20&LEFT(23Q1,2)&RIGHT(23Q1,1)
反正都是拼拼凑凑
然后让①和②逐一匹配,所有满足①=②对应的数据求和,即公式:
=SUMPRODUCT((①=②)*①中日期对应的想要求和数据列)
这样拖下去就能返回不同年份的季度汇总。
=SUMPRODUCT(((YEAR($A$3:$A$100000)&(ROUNDUP((MONTH($A$3:$A$100000)/3),0)))=((20&LEFT($I4,2)&RIGHT($I4,1))))*D$3:D$100000)
三、如果是月度或者年度求和难就更简单了……不再赘述