如何实现多表自动汇总?

今天要讲的是在昨天按位置求和的基础上做一下升级,更加实战化!

后续小编可能对推文的部分做一下难度评估,方便大家阅读,初步分为

函初、函中和函高!具体小编根据经验给出!

先看一下数据源:每个月的人名顺序不一致且有多有少!

需求:按照汇总表姓名汇总1-4月销售总金额!

公式有一定的难度,如果看完解析还是不懂,就需要补补一下基础的方式的基础了!

公式:=SUMPRODUCT(SUMIF(INDIRECT(ROW($1:$4)&"月!A:A"),A2,INDIRECT(ROW($1:$4)&"月!B:B")))

简单解析:

1、公式涉及到4个方式,部分函数之前出过专题,比如SUMIF(强化阅读

其他三个,重点是解释一下ROW和INDIRECT!

2、ROW函数本身是返回对应参数的行,比如ROW(A1)=1,ROW(A2)=2

关注的是行,当然Excel中整行可以使用使用开始行号:结束行号来表示,比如公式中的ROW(1:4)对应就是一个{1;2;3;4}的垂直数组。

ROW($1:$4)&"月!A:A"的结果也就变成了{"1月!A:A";"2月!A:A";"3月!A:A";"4月!A:A"},其实只要你不觉得麻烦,你也可以直接手写{"1月!A:A";"2月!A:A";"3月!A:A";"4月!A:A"},也是一样的,但是显然月份较多不合适!

3、{"1月!A:A";"2月!A:A";"3月!A:A";"4月!A:A"}只是一组常量数组,其中只是字符串,如果想转成可以计算的对应表的区域,就需要我们的INDIRECT函数

INDIREC函数本身是间接的意思,根据提供的字符串地址,返回对应的区域引用

方便SUMIF函数计算!

4、SUMPRODUCT的函数之所以出现,是因为我们SUMIF部分结果是根据对应的表的个数来的,这里就有4个结果组成的内存数据,想要最后合计就需要

SUMPRODUCT再次求和,SUMPRODUCT自带多重运算,无需三键,使用SUM的话,记得三键结束!

然后根据我的经验,大家可能会问的,我提前回答一下:

Q&A:

Q:如果工作表名称不是你这样有规律的1月、2月……怎么办?

A:如果没有规律,可以使用宏表函数提取工作表名称或者VBA,也可以提取在汇总表中准备好,直接引用。对应的宏表函数一般使用GET.WORKBOOK(1),减轻大家阅读负担,今天不再扩展,有兴趣的同学自行学习或者等后期推文!

Q:如果我没有全部的姓名怎么办?

A:一般我们都是有员工花名册的,直接使用花名册(只多不少),但是现实工作中确实会有这种情况。出现了一般我们使用的是多表去重的思路,把每个表的姓名依次粘贴到一列,然后使用数据-删除重复值就得到的全部姓名,确保不遗漏,太多表就可以使用VBA处理(一般使用字典的唯一key的特性处理!)

(0)

相关推荐