多表汇总的需求开始多起来了,将各种可能发生的案例都整理在一起。
1.工作表的格式一样,商品的顺序也一样

对于这种,入门级别的人会一个个表格加。
='1月'!B2+'2月'!B2+'3月'!B2+'4月'!B2+'5月'!B2+'6月'!B2+'7月'!B2+'8月'!B2+'9月'!B2+'10月'!B2+'11月'!B2+'12月'!B2

稍微有点基础的会用SUM函数的这种用法。
=SUM('1月:12月'!B2)

而我却用这种另类的方法。
=SUM('*'!B2)

*代表除当前工作表以外的所有工作表,这样就不需要用到工作表名称,更方便。这种方法只适用于Excel,而WPS表格只能用上面的基础用法。
2.工作表的格式一样,商品的顺序不同
这种情况用公式也行,不过估计80%的人看不懂。
一般都是借助PQ将所有工作表合并到一个工作表,然后借助透视表统计。详见文章:年度数据统计,超级透视表显神威
PQ已经讲过多次,这次就不再讲了,卢子用合并计算这个方法来解决。
Step 01 点任意空白单元格,数据→合并计算。

Step 02 依次引用1月到12月的区域添加进去,勾选首行、最左列,确定。

经过简单两步就搞定了。

3.工作表的格式一样,销售金额都在B列,现在要查询每个商品的销售金额。

稍微有点基础的,采用VLOOKUP函数这种用法。
=VLOOKUP(A2,'1月'!A:B,2,0)

2月、3月……12月,依次更改VLOOKUP函数的第二参数。
=VLOOKUP(A2,'2月'!A:B,2,0)
=VLOOKUP(A2,'3月'!A:B,2,0)
……
=VLOOKUP(A2,'12月'!A:B,2,0)
这种虽然可以解决问题,但是需要修改10多次,很容易改错。
可采用了另外的方法,每个工作表名称都列出来了,其实可以借助INDIRECT函数的间接引用。
=VLOOKUP($A2,INDIRECT(B$1&"!A:B"),2,0)

空调在某些月份没有对应值,显示错误值#N/A,可以嵌套函数IFERROR,让错误值显示0。
=IFERROR(VLOOKUP($A2,INDIRECT(B$1&"!A:B"),2,0),0)

4.工作表的格式不同,销售金额的列数不确定,现在要查询每个商品的销售金额。
1月的销售金额在C列。

2月的销售金额在D列。

其他就不依次截图,反正就是列数不确定。
有不少读者做表就非常随意,这个月觉得好像记录得不全面就增加几列,下个月觉得好像没必要记录这些又删除一些列,最后表格一团糟。
这样的表格还有救吗?
还好,有MATCH函数可以自动识别出销售金额在第几列。
=MATCH("销售金额",$1:$1,0)

将MATCH函数作为VLOOKUP函数的第三参数,原来的区域再修改大点即可解决问题。
=IFERROR(VLOOKUP($A2,INDIRECT(B$1&"!A:Z"),MATCH("销售金额",INDIRECT(B$1&"!1:1"),0),0),0)

5.表格格式一样,每个商品可能出现多次,查找最后一次的销售金额。

其实这个就跟日记账差不多,都是查找最后一笔金额。查找首次出现的用VLOOKUP函数,查找最后一次出现的用LOOKUP函数。
=IFERROR(LOOKUP(1,0/(INDIRECT(B$1&"!A:A")=$A2),INDIRECT(B$1&"!B:B")),0)

B$1&"!A:A"的作用就是获取每个表的A列的文本内容,不能参与计算。

而嵌套INDIRECT函数,就是间接的把文本内容转变成真正的区域。
另外,如果电脑的配置比较好可以引用整列区域,配置一般的,建议将区域改小一点,这样运算效率更高,电脑就不会卡。
=IFERROR(LOOKUP(1,0/(INDIRECT(B$1&"!A2:A99")=$A2),INDIRECT(B$1&"!B2:B99")),0)

LOOKUP函数语法:
=LOOKUP(1,0/(查找区域=查找值),返回区域)
6.表格格式一样,每个商品可能出现多次,要汇总销售金额。
按条件求和,一般用SUMIF函数,将刚刚案例1的区域套进去即可。SUMIF函数没有对应值直接是0,不需要再嵌套IFERROR函数。
=SUMIF(INDIRECT(B$1&"!A2:A99"),$A2,INDIRECT(B$1&"!B2:B99"))

SUMIF函数语法:
=SUMIF(条件区域,条件,求和区域)
当然,实际工作中最好将所有内容都记录在同一个工作表,这样更方便汇总。