Excel SQL方法合并多个工作表数据,透视表统计各种数据

现有需求:合并1-3月的所有数据,并完成统计。

传统的方法,我们可以在键盘上依次按着ALT,+D+P来使用多重数据透视来实现,但此法实在不够灵活。

因此,我们同样如之前的文章一样,选择SQL方法来提取数据作为透视表的数据源。

建立链接:数据--现有链接--浏览更多,根据路径选择目标Excel文件即可。

依据路径找到数据源文件:

先选择其中一个工作表建立链接:

结果选择用透视表的方式呈现,点击属性写入SQL语句:

SQL语句为:

select * from [1月$]

union all

select * from [2月$]

union all

select * from [3月$]

结果为:

拖拉数据透视表字段,完成布局,得出想要的结果:

SQL语句中使用"*"号的弊端。

1、SQL是数据库常用的查询语言,其基本要求就是数据得像数据库一样规范,但是往往在Excel中的数据都是不那么规范的;

2、* 表示整表全部数据的意思,如果1月、2月、3月,3个表格的数据其中有一个表格不规范,那么上面的SQL语句就不能够生效。union all要求每个合并的表格字段数,也就是列数一样多,"*"表示所有的行和列,

3、使用"*"来提取数据,对数据的要求比较严格;

4、解决方法,将"*"拆分成为限定为具体的字段,或(同时)限定数据表格的范围:

下面例子中,1月的表格多出了字段1这一列,如果使用"*"提取数据(上面的SQL代码),将得不到结果:

因此,将"*"拆分,限定为具体的字段,SQL语句改为:

select 姓名,部门,月份,业绩 from [1月$]

union all

select 姓名,部门,月份,业绩 from [2月$]

union all

select 姓名,部门,月份,业绩 from [3月$]

或限定数据表格范围,取全部数据也取不到字段1这列数据

select * from [1月$a1:d]

union all

select * from [2月$a1:d]

union all

select * from [3月$a1:d]

总之,在Excel中使用SQL,数据最好最好要规范(不带合并单元格,数据类型一致等等)。

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20180809G08ULL00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券