年底了,发现学员群内一大堆多表统计的问题,一个下午居然回答了7-8个类似的问题。既然如此,卢子就干脆整理成文章,统一说明。
有12个明细表,有的人叫1月到12月,有的人直接就用Sheet1到Sheet12,这些都不影响全局,处理方式都差不多。要在汇总表统计这12个表的金额,现在以C列为例进行说明。
针对这种情况,可以简单分成两种。
1.所有表格的格式一模一样,包括姓名的顺序也一模一样。
遇到这种,你就该暗自庆幸,多么幸运,一个超级简单的公式即可搞定。
=SUM(Sheet1:Sheet12!C7)
公式说明:
=SUM(开始表格名称:结束表格名称!单元格)
2.所有表格的格式一模一样,但是姓名的顺序不一样。
遇到这种,那就头痛了,公式复杂了好多倍。
有的人可能会觉得,顺序不一样,不就是用SUMIF函数嘛,有何难的。如果真有这么简单就好了,直接嵌套进去,全部都是错误值。
对于这种应该怎么解决?
看清楚了,就是这个长长的公式。
=SUMPRODUCT(SUMIF(INDIRECT("Sheet"&ROW($1:$12)&"!b:b"),B7,INDIRECT("Sheet"&ROW($1:$12)&"!c:c")))
其实这个也算一个套路,需要背诵起来。
=SUMPRODUCT(SUMIF(INDIRECT(所有工作表名称&"!条件区域"),条件,INDIRECT(所有工作表名称&"!求和区域")))
黑色字体的永远不变,变的只是红色字体。
现在最关键的就是如何获得所有表名称。Sheet1到Sheet12,Sheet这一部分是不变的,变的只是数字部分,现在就转变成获取数字1到12。
获取序号可以用ROW函数。
其实,ROW函数还有一种数组用法,可以获得1到12的数字。
=ROW(1:12)
这种不能回车,而是要借助F9键在编辑栏查看。
现在用公式,在编辑栏按F9键就可以知道获得了12个表名。
="Sheet"&ROW(1:12)
因为公式是需要下拉的,所以需要锁定数字。
="Sheet"&ROW($1:$12)
多表求和的难点就是获得所有表格名,这个搞定以后,直接套用就可以出来了。
比如现在是1到12月,那就略作改变即可。
=SUMPRODUCT(SUMIF(INDIRECT(ROW($1:$12)&"月!b:b"),B7,INDIRECT(ROW($1:$12)&"月!c:c")))
最后,重要的事再说一遍。
其实这个也算一个套路,需要背诵起来。
=SUMPRODUCT(SUMIF(INDIRECT(所有工作表名称&"!条件区域"),条件,INDIRECT(所有工作表名称&"!求和区域")))
黑色字体的永远不变,变的只是红色字体。
3.同样是案例2的那个表格,唯一的差别就是现在工作表名没有规律,都是人员。
先看重点,这次的公式非常复杂,但你不需要懂得公式的含义,你只要懂得更改核心部分就行。
Step 01 点公式→定义名称,输入名称:表名,复制下面的公式到引用位置,确定。
=MID(GET.WORKBOOK(1),FIND("]",GET.WORKBOOK(1))+1,99)&T(NOW())
公式的意思就是获取所有工作表名称。现在是最后一个汇总表不需要统计进去,所以这里需要扣除一个表。
Step 02 在C7单元格输入这个复杂的公式即可搞定。
=SUMPRODUCT(SUMIF(INDIRECT(LOOKUP(ROW($1:$12),ROW($1:$365),表名)&"!b:b"),B7,INDIRECT(LOOKUP(ROW($1:$12),ROW($1:$365),表名)&"!c:c")))
核心部分来了,就是红色字体部分,ROW($1:$12),这里的意思就是说对第1个到第12个表进行求和。
如果你现在的表格是31个名称,从第2个开始统计,可以改成ROW($2:$31)。
只改这里,剩下的就顺便看一下区域是否跟自己的表格对应,如果不对应再改下即可。
Step 03 因为使用了宏表函数,需要将表格另存为启用宏的工作簿才可以。
有的公式,是拿来复制粘贴的,不需要懂得太多含义,但愿你懂得这句话的含义。
联系客服