Excel中如何用SQL进行多工作簿汇总?

lxvvx


对于经常使用Excel的人来说,在Excel中使用SQL能高效处理你的数据,但据我所知Excel中的SQL语法与MySQL数据的语法还有点不一样。现在我就来实例说明如何用SQL语句对多个工作簿进行汇总。假如我们要汇总如下三个工作簿

1. 学生信息表

2. 学生成绩表

3. 学生兴趣表

将这三个工作簿按相同学号进行合并,大致分如下几步:

1. 加载数据

在Excel中,依次点击:数据->自其它来源->来自Microsoft Query->Excel Files*

然后再找到你Excel表格的存放目录,如下图

点击下面你要加载的Excel数据表,进入下面页面

将上图可用的三张表都加入到右边查询结果中的列,加入完成后点击下一步,数据就加载完成了。

2. 编写SQL代码并执行

接下来点击上面的SQL按钮开始写SQL合并代码。单纯的合并代码如下

SELECT

tm.*,

tn.兴趣爱好 AS 兴趣爱好

FROM(

SELECT

ta.学号 AS 学号,

ta.姓名 AS 姓名,

ta.年龄 AS 年龄,

ta.性别 AS 性别,

ta.身高 AS 身高,

ta.出生地 AS 出生地,

tb.语文成绩 AS 语文成绩,

tb.数学成绩 AS 数学成绩

FROM(

SELECT

tt.学号 AS 学号,

tt.姓名 AS 姓名,

tt.年龄 AS 年龄,

tt.性别 AS 性别,

tt.身高 AS 身高,

tt.出生地 AS 出生地

FROM [学生基本信息表$] tt

)ta

INNER JOIN(

SELECT

tt.学号 AS 学号,

tt.语文成绩 AS 语文成绩,

tt.数学成绩 AS 数学成绩

FROM [学生成绩表$] tt

)tb

ON ta.学号=tb.学号

)tm

INNER JOIN(

SELECT

tt.学号 AS 学号,

tt.兴趣爱好 AS 兴趣爱好

FROM [学生兴趣表$] tt

)tn

ON tm.学号=tn.学号

将代码写好后复制放入文本框中,点击确定按钮,就开始执行SQL语句。结果如下

这样就完成了三个工作簿的数据合并,接下来将数据返回Excel表。

3. 返回数据到Excel表

点击左上角的文件->将数据返回Microsoft Excel,弹出如下页面

选择数据的存放位置为新工作表,然后点击确定即可,最终得到如下数据表

这样就完成了三个工作簿的数据合并。


Tips:

1. 由于Excel中执行SQL语句时没有比较详细的报错信息,如果SQL代码语法有错误有可能执行会报错,这个问题可以上网查询或者直接在评论区问我。

2. 在Excel SQL中常用到的合并操作有INNER JOIN、LEFT JOIN、RIGHT JOIN、UNION、UNION ALL等,但不支持FULL JOIN。更复杂的需求都有一定的处理技巧。


薛定谔的小猫猫


Excel的多工作簿合并可以用SQL完成,但是,个人更加建议使用Excel2016的新功能Power Query(Excel2010或Excel2013可到微软官方下载相应的插件)来完成。具体方法如下:

Step01:数据-从文件-从文件夹

Step02:浏览选择数据所在的文件夹,然后单击确定

Step03:添加列-添加自定义列-输入公式:Excel.Workbook([Content])

Step04:单击上一步用公式读取的数据列名右侧的数据展开按钮

Step05:继续展开数据

Step06:删掉不需要的列(选择要保留的列)

Step07:将第一行用作标题

Step08:删掉其他表里重复的标题行和汇总行

Step09:关闭并上载数据

最后数据结果汇总如下:

通过Power Query进行多个工作簿数据的汇总,方法非常简单,而且,对于以上过程中的每一个操作,都会形成一个完整的步骤记录,如下图所示:

对于这些步骤可以非常方便地观察其结果,并按需要进行修改——这种所见即所得的操作非常便于在数据汇总和处理过程中发现问题并及时纠正。

此外,相对于SQL,Power Query的操作更加简单,而在Excel里写SQL其实是很麻烦的,如果只是简单的而且非常规范的少数几列数据汇总还好,如果数据较为复杂,用SQL简直是个灾难,但用Power Query可以按需要做非常多的中间处理(数据清洗)工作,然后再进行数据的汇总。

因此,自从有了Power Query,我就没有再使用过Excel里的SQL。


更多精彩内容,尽在【Excel到PowerBI】

我是大海,微软认证Excel专家,企业签约Power BI顾问

让我们一起学习,共同进步!




Excel到PowerBI


第一步:点击第一个表格,单击右键,查看代码

第二步:直接把编程复制进去,然后点击运行,运行子过程/用户窗体

第三步,运行完毕,回到表一,已经合并完成。筛选出标题

第四步,选定除去第一列的多余标题,快捷键Ctrl+G&rarr——"定位条件"——选择"可见单元格"——"确定"——单击右键删除

最后释放出所有数据即可

数据合并之前

数据合并之后


深海鱼爱生活


SQL多工作薄汇总数据,关键点是在SQL语句中工作薄和工作表的写法,具体操作请看如下步骤

1、将待汇总的工作薄放入到同一文件夹下

各工作薄数据结构如图

2、打开汇总工作薄,点击数据选项卡--现有连接

3、点击浏览更多找到存放待汇总工作表的文件夹,并点击任意待汇总工作薄

4、单击属性,在弹出对话框中选择定义选项卡,并在命令文本中输入SQL代码(工作薄路径视具体存放位置而定)

最终完成的汇总效果如图

若在第四“导入数据”对话框中选择“数据透视表”则最后汇总会直接弹出透视表布局界面,可以方便地对多工作薄数据进行同类汇总统计分析等。

以上即是用SQL做多工作薄汇总的大致操作方法,重点请注意命令文本中SQL代码的语法细节。欢迎关注@Excel泥瓦匠,Excel学习,E路有你!


Excel小王子


select * from [工作簿路径1].[工作表名1] union all

select * from [工作簿路径2].[工作表名2] union all

select * from [工作簿路径3].[工作表名3]


个人比较推荐vba 引用ADO的方法,可以用变量代替工作簿路径不用一个个写。

展开说太麻烦,就这样吧。


分享到:


相關文章: