如何使用SUMPRODUCT函数实现季度(年度月度)求和

deer332025-02-01技术文章61

核心思路是转化+拼接,让原始日期和季度日期两列数据可以匹配对比,进而对符合条件的进行求和。

一、首先对原始日期的拆解拼接:

原始日期如何提取年份:

=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)

三、如果是月度或者年度求和难就更简单了……不再赘述