跳到主要内容

多表合并汇总:SUMIF 跨界求和

明细分散在 1 月、2 月、3 月三个工作表里,要做汇总。手工复制粘贴三次,下个月还得再来一遍。SUMIF 加跨表引用能一次解决。

一、单表条件求和的底子​

=SUMIF(A:A,"技术部",C:C)
  • A 列是条件区域(部门);
  • "技术部" 是条件;
  • C 列是求和区域。

多条件用 SUMIFS,求和列放第一个参数:

=SUMIFS(C:C,A:A,"技术部",B:B,"已付款")

这是最容易记错的地方:SUMIF 求和列在最后,SUMIFS 求和列在最前。

二、跨单个工作表求和​

工作表名是 1月,引用写法:

=SUMIF('1月'!A:A,"技术部",'1月'!C:C)

工作表名含空格、数字开头、或其他特殊字符时,必须加单引号。纯中文名有时不加也能跑,但加上永远安全。

三、三表求和:三种写法​

写法 1:逐个相加,最笨也最稳​

=SUMIF('1月'!A:A,A2,'1月'!C:C)+SUMIF('2月'!A:A,A2,'2月'!C:C)+SUMIF('3月'!A:A,A2,'3月'!C:C)

12 个月就是 12 段,长但绝对不会有歧义。表结构不一致时只能这么写。

写法 2:三维引用(表名连续、结构一致时可用)​

=SUM(SUMIF(INDIRECT("'"&{"1月";"2月";"3月"}&"'!A:A"),A2,INDIRECT("'"&{"1月";"2月";"3月"}&"'!C:C")))

INDIRECT 拼出表名,数组常量提供表名列表,外面套 SUM 汇总。优点是加月份只需改数组,缺点是 INDIRECT 是易失函数,且表名拼错会报 #REF! 而不是明显报错。

写法 3:先合并明细再用透视表​

数据 → 获取数据 → 从文件夹 / 从多个工作表合并

一次合并成一张大表,后面用什么公式都简单。这是长期方案,值得优先考虑。

四、用 SUMPRODUCT 做多表多条件​

要同时按部门和状态跨表统计,SUMPRODUCT 能一次写完:

=SUMPRODUCT(('1月'!A2:A100=A2)*('1月'!B2:B100="已付款")*'1月'!C2:C100)

跨三张表相加,就把三块加起来。注意 SUMPRODUCT 不能用整列引用,必须写实际行范围,否则性能极差。

五、汇总表的标准做法​

推荐结构:一张"汇总"表 + 若干"明细"表。

汇总表 A 列放部门清单(用 UNIQUE 生成或手工维护),B 列写:

=SUMIF(INDIRECT("'"&B$1&"'!A:A"),$A2,INDIRECT("'"&B$1&"'!C:C"))

B1 是月份标题(1月、2月…),横向向右拖就自动换表。这样汇总表只有一行公式,扩到 12 个月只是拖宽一点。

要更稳,把表名做成横向标题行,并在 INDIRECT 外面套 IFERROR:

=IFERROR(SUMIF(INDIRECT("'"&B$1&"'!A:A"),$A2,INDIRECT("'"&B$1&"'!C:C")),0)

新月份的表还没建时显示 0 而不是报错,汇总表的合计不会被打断。

六、常见坑​

现象原因处理
#REF!表名拼错或含特殊字符未加引号表名加单引号
结果为 0 但明明有数据条件列里有空格或文本数字TRIM + 统一类型
结果偏小求和区域行数与条件区域不一致用整列或对齐范围
关闭源文件后报错INDIRECT 引用已关闭工作簿改用直接引用
表名改了公式全挂硬编码表名用单元格存表名再拼接

七、速查​

场景写法
单条件=SUMIF(A:A,"技术部",C:C)
多条件=SUMIFS(C:C,A:A,"技术部",B:B,"已付款")
跨单表=SUMIF('1月'!A:A,A2,'1月'!C:C)
跨多表逐个相加,或 INDIRECT + 数组
长期方案合并明细后做透视表

跨表公式的维护成本主要来自"表名"。把表名放在单元格里而不是写死在公式里,是让这份表能活过三个月的关键。