{eval=Array;=+count(Array);}

问答专栏Q & A COLUMN

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

felix0913felix0913 回答0 收藏1
收藏问题

2条回答

leo108

leo108

回答于2022-06-28 13:58

对于经常使用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。更复杂的需求都有一定的处理技巧。

评论0 赞同0
  •  加载中...
cnTomato

cnTomato

回答于2022-06-28 13:58

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

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

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


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

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

评论0 赞同0
  •  加载中...

最新活动

您已邀请0人回答 查看邀请

我的邀请列表

  • 擅长该话题
  • 回答过该话题
  • 我关注的人
向帮助了您的网友说句感谢的话吧!
付费偷看金额在0.1-10元之间
<