刚刚,我搞定了困扰多年的难题——Excel多表合并
图/文:安伟星
本文为新书章节试读内容
新书马上上市
已经等不及了
多表合并历来是困扰多数职场人士的难题,因为用到它的场景实在太多了:不同部门的数据、不同月份的数据、甚至不同公司的数据报表……分散在不同的工作表或者不同的工作簿中,他们具有相同的表头,如何快速将他们合并在同一个工作表中?难道只能一个一个复制么?
如图2-70所示,不同地区的销售数据,分布在不同的工作表中,它们的特点是工作表的数据结构是相同的,如何能够快速将其合并在同一个工作表中?
▼
图2- 70:分布在不同工作表中的销量数据
Excel2016版本之前,解决这样的问题,基本上只能通过VBA来完成,但是VBA相对来说门槛比较高,不适合大多数职场人士。
庆幸的是,Excel2016自带的Power Query查询工具允许用户链接、合并多个数据源中的数据,我们可以灵活使用Power Query来实现Excel多表合并。
当然,由于Power Query功能异常强大,仅用它实现多表合并显然有些“杀鸡用牛刀”的感觉,但是对于不会VBA的同学,面对困扰已久的“多表合并”难题,这不失为一个好方法。
注:Excel2010~Excel2013版本,默认是没有Power Query工具的。如果您使用的是Excel 2010~Excel2013版本,可以到微软官网下载Power Query,这是一个免费插件,但是更早版本的Excel(如2003等)不支持这个插件。
— 01 —
同一个工作簿中的多表合并
案例1:如图2-70所示,多个地区的销售数据分布在不同的工作表中,这对后续的数据分析造成极大的不便,比如无法使用数据透视表,需要利用复杂的函数才能实现跨表求和等等,将不同表中的数据合并在同一个表中才是王道。
Step1:启动Power Query是通过Excel【新建查询】菜单完成的,它位于【数据】选项卡中的【获取和转化】分区。点击【新建查询】→【从文件】→【从工作簿】,如图2-71所示,然后在弹出的“导入数据”选择框中,选择包含要合并工作表的Excel文件,点击导入,如图2-72所示。
▼
图2- 71:从工作簿中新建查询
▼
图2- 72:将工作簿导入新建查询中
Step2:选择需要合并的工作表,并点击【编辑】,从而对新建的查询进行编辑,如图2-73所示。
▼
图2- 73:选择需要合并在一起的工作表
Step3:接下来需要新建一个“追加查询”,将单个表合并起来,在查询编辑界面,点击【追加查询】→【追加查询】,如图2-74所示。
▼
图2- 74:新建追加查询
在弹出的“追加查询”对话框中,将剩余的表格追加到右侧“要追加的表”一栏中,然后点击【确定】,如图2-75所示。
图2- 75:将剩余的两个表追加到当前查询表中
Step4:追加查询创建之后,会回到Power Query主界面,切换至【开始】选项卡→【关闭】分区→点击【关闭并上载】下拉三角→【关闭并上载至…】,如图2-76所示,这一步的目的是将在Power Query中处理过的数据导入到Excel中。
▼
图2- 76:将Power Query中的查询导入Excel
提示:在Power Query中创建的查询表更像是数据库结构,我们需要将它在导入到Excel中。
在接下来的“加载到”界面中,保持默认选项,直接点击【加载】,即可将创建的“追加查询”加载到Excel工作表中,完成之后,我们已将同一工作簿中的三个不同工作表合并在一起,如图2-77所示。
▼
图2- 77:三个工作表合并在一起的状态
之后,如果三个单独的表中有更新,在总表中选择点击【数据】→【连接】→【全部刷新】即可获取数据的最新状态。
通过Power Query合并起来的工作表的另一个好处是,这是一个动态的合并关系,一旦原始表中的数据发生变化,只需要刷新即可完成新数据的合并,可谓以逸待劳!
— 02 —
不同工作簿中的多表合并
更复杂的情况是我们要合并的工作表并不在同一个工作簿中,而是分布在不同的Excel文件中。如图2-78所示,有多个部门提交的数据,放置在同一个文件夹中,我们需要将这些Excel文件中的工作表合并在一起。
▼
图2- 78:分布在不同工作簿值中的数据
提示:应该注意的是,要汇总的这些文件,工作簿中的数据结构必须相同(列数相同、列标题相同)。
Step1:点击【新建查询】→【从文件】→【从文件夹】,如图2-79所示,然后选择数据所在的文件夹,并点击【确定】。
▼
图2- 79:从文件夹新建查询
然后直接点击【编辑】,即可将所有Excel文件的信息加载至Power Query并处于编辑界面。
Step2:将工作簿加载到Power Query之后,可以看到,工作簿的所有属性信息都在新建的查询中,而这里面很多信息都是不需要的,比如工作簿名、类型等,我们只需要用到工作簿中的内容,因此选择【Content】列,并点击【开始】→【删除列】→【删除其他列】,如图2-80所示,这样可以将无关列删除。
▼
图2- 80:将无用的新系列删除
Step3:接下来,需要把【Content】中的内容提取出来。切换到【添加列】选项卡→点击【自定义列】,如图2-81所示。然后在弹出的【添加自定义列】窗口中输入函数:
Excel.Workbook([Content],true),通过Excel.Workbook把Content 里的内容提取出来,如图2-82所示。
▼
图2- 81:自定义添加列
▼
图2- 82:通过函数自定义添加列
提示:注意Excel.Workbook()的第二个参数,我们通过指定True,实现了默认情况下将第一行作为标题,省去了后面提升和筛选标题行的操作。
Step4:点击新建的Test列右侧的扩展按钮,把所有字段扩展出来,如图2-83所示。
▼
图2- 83:扩展Test列中的所有内容
Step5:重复Step2中删除其他列,选中Test.Data列,然后点击【删除其他列】,然后点选Test.Data的扩展按钮,将Test.Data中的数据扩展出来,如图2-84所示。
▼
图2- 84:将Test.Data值的数据扩展出来
经过两轮的筛选,即可看到,目前所剩下的列已经是各工作簿中的数据表头了。
Step6:点击【确定】后即可得到最终的汇总结果。接下来,和2.7.1中 Step4相同的操作,将数据加载到Excel表中,可以看到,所有部门的数据均已正确合并到一起。
通过使用此方法,我们可以快速对同一文件夹下的同结构Excel进行合并。而且将来数据更新后我们只需要在合并后的Excel表中点击【数据】→【连接】→【全部刷新】即可获得最新数据合并结果,一劳永逸。
不仅如此,此时放置各部门Excel数据的文件夹已经成了一个动态容器:如果向文件夹中新增其他部门的数据,Power Query也会自动把数据合并进来。所以实际应用中,每个月只需要将各个部门发送的数据复制到此文件夹中,在总表中点击刷新即可。
— 03 —
工欲善其事必先利其器
很多优秀的第三方Excel插件,可以更简单地完成本节所讲的功能。
第一款是Excel易用宝,它是是由Excel Home开发的一款Excel功能扩展工具软件,可以让繁琐或难以实现的操作变得简单可行,甚至能够一键完成。
第二款是慧办公插件,它同样是一款功能丰富的插件,通过这个插件,可以很轻松实现一些复杂的操作,包括本节讲的合并工作表,如图2-85所示。
▼
图2- 85:慧办公插件“傻瓜式”功能
这两款插件都随着随书资源赠送给大家,放置的路径是:图书配套资源\第2章 Excel这样玩,秀出真技能\2.7 困扰很多人的难题:Excel多表合并。
以下是ExcelHome创始人、微软全球最有价值专家周庆麟老师为新书《竞争力:玩转职场Excel从此不加班》写的推荐语(节选)
作者:安伟星,微软Office认证大师,领英中国专栏作者,《竞争力:玩转职场Excel,从此不加班》图书作者,原创公众号:精进Excel(ID:SeniorExcel)
撩我
精进Excel
在这里体验Excel之美