做财务、行政、运营的小伙伴,大概率都遇到过这种头疼的场景:
每月单独建一张工作表(1月、2月、3月…12月),想要动态汇总多个月份的指定数据,比如统计3-8月某产品的总销量、1-5 月某员工总绩效、4-9 月某项费用总支出。
今天给大家分享一条动态跨月批量求和公式,只需要指定起始月份和截止月份,就能自动汇总指定月份内的全部数据!
一、基础数据整理
首先我们需要将基础数据进行整理,满足以下 2 个条件:
1. 工作表命名规则:工作表命名必须统一,如: 1月、2月、3月……12月;或者 1 月数据、2 月数据、3 月数据......12 月数据。
2. 所有月份表格格式完全一致:C列为匹配条件(名称、项目、姓名、产品名等),D列为需要求和的数值(销量、金额、数量、绩效等);
二、汇总表格整理
准备好汇总表格,其中在 F2 和 G2 单元格设置下拉菜单,分别对应 1-12 月份,这样来动态选择月份区域:
三、直接套用|完整万能公式
下面是适配「1月、2月、3月…」规范月度工作表的终极汇总公式,可直接复制使用:
=SUM(IFERROR(SUMIF(INDIRECT(SEQUENCE($G$2-$F$2+1,,$F$2)&"月!C2:C1000"),B3,INDIRECT(SEQUENCE($G$2-$F$2+1,,$F$2)&"月!D2:D1000")),0))
公式作用:在 F2 单元格选择起始月份,在 G2 单元格选择结束月份,批量遍历所有月度工作表,匹配对应条件,自动汇总多表数据,报错自动归零,表格更整洁。
第一步:SEQUENCE——自动生成月份序列
SEQUENCE($G$2-$F$2+1,,$F$2)&"月!C2:C1000"
SEQUENCE($G$2-$F$2+1,,$F$2)&"月!D2:D1000"
这一层的作用就是按你选择的起止月份,自动生成一串连续的数字
假设F2=3,G2=8,那么 G2-F2+1 等于6,意思是要生成6个数字,从F2(也就是3)开始。
结果:{3,4,5,6,7,8},然后拼接上【月!C2:C1000”】和【“月!D2:D1000】,最终生成:
条件区域:{"3月!C2:C1000"; "4月!C2:C1000"; ...; "8月!C2:C1000"}
求和区域:{"3月!D2:D1000"; "4月!D2:D1000"; ...; "8月!D2:D1000"}
第二步:INDIRECT——把地址变成真实引用
INDIRECT(月份序列&"月!C2:C1000")
作用:把第一步生成的「3、4、5、6」地址转会成真实引用区域:3月!C2:C1000、4月!C2:C1000
通俗理解:第一步提取到了地址,现在通过地址找到了货
第三步:SUMIF——分别去每个表里做条件求和
SUMIF(3月!C2:C1000, "苹果", 3月!D2:D1000)
拿着“苹果”这个条件,去3月表的C列查找,找到后把同一行D列的数字加起来。
SUMIF会依次对3月、4月、5月……8月分别执行这个操作。
结果:返回一组数字,比如{100; 150; 80; 200; 170; 90},分别代表每个月“苹果”的销量。
第四步:IFERROR——遇错自动归零
IFERROR({100; 150; 80; 错误; 170; 90}, 0)
作用:如果某个月份表格不存在、无数据、匹配不到内容,不报错,直接返回0。
如:某个月份表不存在(比如 7 月不存在),结果:{100; 150; 80; 200; 0; 90}
第五层:SUM——最后汇总
SUM({100; 150; 80; 200; 0; 90})
把3月、4月、5月、6月……所有月份的SUMIF计算结果,全部加总,得到最终区间总数据
写在最后
这个公式的精妙之处在于:
- 动态:改两个数字,汇总范围自动变
- 智能:按条件匹配,不怕行顺序乱
- 健壮:缺表也不报错,自动归零处理
- 高效:一个公式代替成百上千次手动操作