
我们经常在实际工作中要对多个工作表进行汇总,使用函数太麻烦,要用VBA你可能对代码不熟悉而无从下手。实际天无绝人之路,Excel 数据透视表加简单的SQL代码就可以解决问题,不妨我们试试。先看图片:

有A、B、C三张表,而且表的字段最后一个都不一样,大家可以详细看看到颜色的单元格,现在要求对三张表汇总。汇总结果如下:
1、对三张表汇总,结果如下图。
1、对三张表汇总,结果如下图。

2.、按文理科组汇总,并要求排序。如下图所示

你如果刚看到这三张表要做成所需结果,肯定会大吃一惊,怎么可能呢?我不会怎么办?别担心,我教你用简单的SQL现汇总,然后再按数据透视表要求得到结果。
三张表汇总的代码是:
select 文理科,班级,组,座位号,语文,数学,英语,历史,0 as 政治,0 as 物理 from[A$] union all
select 文理科,班级,组,座位号,语文,数学,英语,0,政治,0 from[B$] union all
select 文理科,班级,组,座位号,语文,数学,英语,0,0 ,物理 from[C$]
select 文理科,班级,组,座位号,语文,数学,英语,历史,0 as 政治,0 as 物理 from[A$] union all
select 文理科,班级,组,座位号,语文,数学,英语,0,政治,0 from[B$] union all
select 文理科,班级,组,座位号,语文,数学,英语,0,0 ,物理 from[C$]
解释:select 是英语的选择意思。也就是选择“文理科,班级,组,座位号,语文,数学,英语,历史,0 as 政治,0 as 物理”这几个字段。
0 as 政治 是添加一个以“政治”命名的字段,单元格区域值为0 。from是从的意思,[A$]是Excel所特有的工作表命名形式。
union all 联合所有的工作表为一个汇总。要想详细了解union all 请看上面链接的相关帖子。注意最后一段代码取消了union all 。
0 第一个代码已经有了所有的字段,下面字段可以省略 0 as,写作0,也可以不省略 0 as ……。
现在我做一个演示,大家看看动画视频。


如何对按文理科组汇总,并要求排序呢?这个简单多了。请看视图操作步骤:

知道了对多个工作表汇总,那么多个工作薄汇总也就不难解决了,大家看看存放到E盘这几个工作的汇总方法。

我们要将车间1、车间2和车间3三个工作薄汇总到汇总工作表里,方法如下,看视频动画:

这个是我们从获取外部数据—–其他来源—–来自 Microsoft Query 里获取工作薄地址后改动代码:
SELECT * FROM `E:工作薄车间1.xls`.[车间1$] union all
SELECT * FROM `E:工作薄车间2.xls`.[车间2$] union all
SELECT * FROM `E:工作薄车间3.xls`.[车间3$]
SELECT * FROM `E:工作薄车间2.xls`.[车间2$] union all
SELECT * FROM `E:工作薄车间3.xls`.[车间3$]
备注: * 星号代表所有工作表字段。
大家还可以汇总成这样的样式,看图:

代码如下:
SELECT ”车间1”,* FROM `E:工作薄车间1.xls`.[车间1$] union all
SELECT ”车间2”,* FROM `E:工作薄车间2.xls`.[车间2$] union all
SELECT ”车间3”,* FROM `E:工作薄车间3.xls`.[车间3$]
SELECT ”车间2”,* FROM `E:工作薄车间2.xls`.[车间2$] union all
SELECT ”车间3”,* FROM `E:工作薄车间3.xls`.[车间3$]
今天就学习这些,不会的可以提问,祝大家新春快乐,万事如意,学习进步。