【源数据才是大麻烦】数据在好多个工作表上,怎么办?
多个工作表的合并是个很常见的需求了,今天我们介绍这个问题的终极解决方案
很多时候,我们的数据被放在多个表上。比如按照部门存放的预算数据——每个部门一个工作表,按照大区存放的销售明细数据——每个大区一个工作表,按照月份存放的工资数据——每个月一个工作表。但是,Excel提供的几乎所有的分析工具,尤其是那些功能强大的,可以让我们提高工作效率的工具,基本上都是针对一张表的。
如果很不幸,你的数据存放在多个表上,而又需要对这些数据进行分析和处理,那么你必须能够将这些表格合并在一起。
Excel提供了工具可以帮助你实现这一切。在Excel中有一个叫做“合并计算”的功能,可以帮助你将这些不同表格的工具合并在一起:
又或者,可以通过Alt+D+P(按住Alt的同时,依次按D,P),然后选择“多重合并计算数据区域”:
这两个方法都可以让你将数据合并在一起。
但是这两个方法有一个缺点,那就是他们只能合并那些数值列,如果有超过一列不是数值的列,是合并不了的。
为了适应更多的情况,我们还专门开发了一个“通用合并工具”,可以让大家很灵活方便的合并多个工作表的数据。
但是不管是合并计算,还是多重合并计算数据区域,又或者我们开发的通用合并工具,使用任意一个工具进行数据合并,这个操作都是一次性的,意味着下一次你必须进行重复的操作,这样就违背了“Excel工作的标准模式”,将数据处理和分析过程从可能的自动化过程打断了,插入了手工操作的环节,增加了工作负担,增加了出错的可能,显著的降低了工作效率。
在Excel中,这个问题的终极解决方案是使用Power Query。下面我就为大家介绍一下如何使用Power Query合并多个表的数据。
先来看看数据:
我们存放了每个月各门店各产品的销量,每个月的数据被放在了单独的工作表中。每个工作表中的数据结构(列)都是相同的,不同的只是其中的数据。(这也是大部分的工作场景的情形)
在“数据”选项卡下,点击“新建查询”,选择“从文件”—>"从工作簿":
选择存放数据的文件:
点击导入,在导航器中,左侧面板点击文件名:
点击右下角“转换数据”按钮,打开Power Query编辑器:
删除Item,Kind,Hidden列:
点击“Data”列标题右侧的展开图标:
保留缺省的选择不动(选中所有列),点击确定:
将列名修改为下图所示的列名:
仔细观察数据,会发现多了一个不想要的行:
实际上每个月份(每个工作表)的数据都会带有这一行。这一行也就是原来的标题行。之所以会将标题行当作内容导入,是因为原来的数据是存放在普通区域中,而没有存放在超级表中。如果存放在超级表中,就不会有这一行的存在了。
我们需要删掉这些行。
在售点列上点击筛选箭头,点击文本筛选器:
在对话框中,将条件输入为:售点:
点击确定,得到结果:
在“主页”选择卡下,点击“关闭并上载”:
就可以得到一个合并了所有工作表数据的表格:
我们可以在这个结果表上进行任意的分析工作。最好的地方在于这个结果表是关联到原始数据上的。任何时候,只要我们在这个结果表上点击鼠标右键,然后点击刷新,就可以得到最新的数据了。
但是,其实除了对这个结果表进行分析外,我们也不怎么使用这个结果表,但是这个结果表还占着非常大的空间(等于我们把相同的数据又存储了一份),非常不环保。
我们可以只保留这个过程,不要这个结果的。
回到刚才的最后一步,即上载数据那一步。我们不选择“关闭并上载”,而是选择“关闭并上载至”:
在对话框中,选择“仅创建链接”,勾选“将此数据添加到数据模型”:
点击“加载”,返回到Excel后,并没有创建新的工作表,也没有把结果数据添加进来。
在Power Pivot选项卡中,点击“管理”:
在Power Pivot for Excel中,点击创建“数据透视表”:
我们就得到了一个标准的透视表(超级透视表):
这样,我们就可以将透视表建立在一系列的查询的配置上,而不用保存一个很大的中间数据表。源数据发生变化后,只需要在“数据”选项卡下点击全部刷新即可:
总结