购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2 一维表格的合并汇总

一维表格的合并,更多的是将这些表格数据堆积在一起,形成一个包括全部数据的总表。这种情况下可以汇总全部字段(假如这些工作表字段个数一样),或者汇总部分需要的字段。

一维表格合并的常规方法主要是现有连接+SQL方法,以及后面要介绍的VBA方法和Power Query方法。本节主要介绍如何使用连接+SQL方法快速汇总大量一维工作表。

2.2.1 汇总全部字段全部数据:基本方法

如果要汇总某个工作簿内的指定的工作表的全部字段全部数据,可以使用下面的SQL语句:

    select * from [表1$]
    union all
    select * from [表2$]
    union all
    select * from [表3$]
    union all
    ……
    select * from [表n$]

这是SQL的基本语句,select表示查询数据的意思,型号(*)表示全部字段,from表示从哪里去查询数据,工作表名称后添加后缀$,用方括号括起来,表示要查询的工作表。

图2-26是一个简单的例子,是四种费用的明细表,现在要将这几个表数据汇总到一个工作表上。

图2-26 四个要汇总的一维表,字段相同

下面是合并汇总的主要步骤。

步骤1 选择“数据”→“现有连接”命令,如图2-27所示。

图2-27 “现有连接”命令按钮

步骤2 打开“现有连接”对话框,如图2-28所示。

步骤3 单击对话框左下角的“浏览更多”按钮,打开“选取数据源”对话框,从文件夹中选择要汇总的工作簿,如图2-29所示。

步骤4 单击“打开”按钮,打开“选择表格”对话框,如图2-30所示。

图2-28 “现有连接”对话框

图2-29 “选取数据源”对话框

步骤5 在“选择表格”对话框中,保持默认选项,单击“确定”按钮,打开“导入数据”对话框,如图2-31所示。

步骤6 在“导入数据”对话框中,单击左下角的“属性”按钮,打开“连接属性”对话框,如图2-32所示。

步骤7 切换到“定义”选项卡,然后在命令文本框中输入下面的SQL语句,如图2-33所示。

    select * from [水电费$]
    union all
    select * from [车船使用税$]
    union all
    select * from [土地使用税$]
    union all
    select * from [利息支出$]

图2-30 “选择表格”对话框,保持默认

图2-31 “导入数据”对话框

图2-32 “连接属性”对话框

图2-33 输入命令文本

步骤8 单击“确定”按钮,返回“导入数据”对话框,选中“表”和“新工作表”单选按钮,如图2-34所示。

图2-34 选择“表”和“新工作表”

步骤9 单击“确定”按钮,就得到四个工作表数据的合并汇总表,如图2-35所示。

图2-35 四个工作表数据合并汇总表

2.2.2 汇总全部字段满足条件的部分数据

当需要把每个工作表中满足条件的数据提取出来,并汇总到一起,可以在SQL语句中添加where条件字句:

    select * from [表$] where 条件表达式

例如,要从工作表“销售明细”中查找地区是“华北”和“华东”,门店性质是“自营”的数据,SQL语句如下:

    select * from [销售明细$] where (地区='华北' or 地区='华东') and 性质='自营'

注意条件之间的逻辑关系,合理使用and、or以及括号组合。

图2-36中的示例要求汇总各月数据到一个表中,地区条件是华北,产品类别是家电类和服饰类。

图2-36 示例数据1

具体合并方法与2.2.1节介绍的完全相同,不过此时的SQL语句变为下面的情形:

    select * from [1月$] where 地区='华北' and (产品类别='家电类' or 产品类别=
'服饰类')
    union all
    select * from [2月$] where 地区='华北' and (产品类别='家电类' or 产品类别=
'服饰类')
    union all
    select * from [3月$] where 地区='华北' and (产品类别='家电类' or 产品类别=
'服饰类')

合并汇总的结果如图2-37所示。

图2-37 汇总结果1

2.2.3 汇总部分字段全部数据

在select语句中,星号(*)表示全部字段,如果要汇总指定字段的数据,则需要列出具体字段名称了,参考如下。

    select 字段1,字段2,字段3,……,字段n from [表$]

图2-38的示例数据是6个月的工资表中,要求将每个人的个税、社保和公积金合并到一个工作表。

图2-38 示例数据2

此时,SQL语句如下,汇总结果如图2-39所示。

    select 月份,姓名,合同类型,个人所得税,社保金,公积金 from[1月$]
    union all
    select 月份,姓名,合同类型,个人所得税,社保金,公积金 from[2月$]
    union all
    select 月份,姓名,合同类型,个人所得税,社保金,公积金 from[3月$]
    union all
    select 月份,姓名,合同类型,个人所得税,社保金,公积金 from[4月$]
    union all
    select 月份,姓名,合同类型,个人所得税,社保金,公积金 from[5月$]
    union all
    select 月份,姓名,合同类型,个人所得税,社保金,公积金 from[6月$]

图2-39 汇总结果2

2.2.4 汇总部分字段满足条件的数据

如果要汇总部分字段的部分满足条件的数据,可以在SQL中添加where子句。例如,在上面的例子中,要把合同工各月的社保和公积金汇总到一张表上,SQL语句如下:

    select 月份,姓名,合同类型,个人所得税,社保金,公积金 from[1月$] where
合同类型='合同工'
    union all
    select 月份,姓名,合同类型,个人所得税,社保金,公积金 from[2月$] where
合同类型='合同工'
    union all
    select 月份,姓名,合同类型,个人所得税,社保金,公积金 from[3月$] where
合同类型='合同工'
    union all
    select 月份,姓名,合同类型,个人所得税,社保金,公积金 from[4月$] where
合同类型='合同工'
    union all
    select 月份,姓名,合同类型,个人所得税,社保金,公积金 from[5月$] where
合同类型='合同工'
    union all
    select 月份,姓名,合同类型,个人所得税,社保金,公积金 from[6月$] where
合同类型='合同工'

汇总结果如图2-40所示。

图2-40 汇总结果3

2.2.5 在汇总表自动添加新字段

如果要在汇总表中添加源表中不存在的新字段,则可以使用下面的SQL语句:

    select *,’2020年’ as 年份,’1月’ as 月份 from [表1$]

这个语句中添加了两个新字段:“年份”和“月份”,该字段下的数据分别是文本“2020年”和“1月”。

这种情况是常见的,因为很多情况下,我们在工作表名称中说明数据的归属,例如,每个月工作表,并没有月份字段,而是在工作表名称中标明月份。

在上面的例子中,如果各月份工作表中没有月份字段,如图2-41所示。

图2-41 每个月发工资表中,没有字段“月份”

那么将各月份工资表汇总起来,并添加一个月份字段,SQL语句如下:

    select '1月' as 月份,* from[1月$]
    union all
    select '2月' as 月份,* from[2月$]
    union all
    select '3月' as 月份,* from[3月$]
    union all
    select '4月' as 月份,* from[4月$]
    union all
    select '5月' as 月份,* from[5月$]
    union all
    select '6月' as 月份,* from[6月$]

图2-42就是一个汇总示例结果。

图2-42 在汇总表添加新字段“月份”

2.2.6 特别重要的几个注意事项

现有连接+SQL语句的方法,对于汇总大量工作表,是很实用的工具,操作简单,只需了解SQL基本语句(select语句)就能应用。不过,也有几个重要的注意事项需要了解。

1.注意列匹配

如果在SQL中使用了星号(*)来代替所有字段,那么就需要保证每个工作表中,字段个数和字段顺序必须完全相同,否则就会出现错误。

如果这些工作表的字段个数和顺序不同,就不能使用星号选择所有字段,而必须使用具体的字段列表“字段1,字段2,字段3,字段4……”获取这些工作表都存在的字段数据。

2.注意检查实际数据区域大小

很多人喜欢在数据区域外输入一些验证计算公式或者数据,这会造成实际数据区域大小并不是用户看见的大小,即使使用Delete键删除了这些单元格数据也没用。

检查实际数据区域大小,可以使用Ctrl+End键,看看定位到哪个单元格。

2.2.7 数据刷新

现有连接+SQL方法汇总工作表,既可以是当前工作簿的N个工作表,也可以是其他工作簿的N个工作表(不打开工作簿就可以汇总),而且得到的汇总表是与数据源动态链接的,只要在汇总数据区域内右击,在弹出的快捷菜单中执行“刷新”命令,如图2-43所示,就可以对汇总结果进行更新。

图2-43 快捷菜单的“刷新”命令

2.2.8 直接创建基于多个工作表数据的合并与分析模型

现有连接+SQL语句方法中,在最后一步的“导入数据”对话框中,可以选择“数据透视表”选项,如图2-44所示,这样得到的就是一个数据透视表,而不是一个数据明细表,因此可以创建数据合并与透视分析于一体的自动化数据分析模板。

图2-44 选择“数据透视表” P9qGsVtuUrMh47LI2agABI95/RST24SaiRm8KRu05lSCqXs9fDOalsiVyH5EmUry

点击中间区域
呼出菜单
上一章
目录
下一章
×