数据整理,你值得拥有PowerQuery

文/黄波艺

图片发自简书App

相信在工作中,很多时候会涉及多张工作表合并。特点是每张工作表的字段(标题)一致,但是数据不一样。例如各地的销售报表,各个部门的财务报表等等。如果是三两张表,怎么合并都问题不大。但是如果有几十上百张表呢?怎么处理?
方法不限于以下三个:
一. Ctrl + C, Ctrl + V
数据的搬运工,理论上也是没有问题的。可是当你在苦逼苦逼地复制粘贴,挑灯夜战,头发冒烟的时候,可曾想妹子/暖男早跑光了呢?

二. VBA for Excel
对VBA有一定了解的话,也不难。基本逻辑是:选取工作表的数据区域—复制—粘贴到汇总表—循环所有工作表。同样是复制粘贴,不过前者自己动手,后者让机器动手。但是单纯为了合并几十张表专门学VBA的话,恐怕不一定所有人都有这兴趣和耐心。

干脆顺便把代码也贴出来,有兴趣的朋友可以看看。
<code>
Sub collectAll()
Dim i As Integer
'如果在03-07版本运行,行数只有65535行,请把1048576改为65536.
Sheets(1).Range("a2:h1048576").ClearContents
For i = 2 To Sheets.Count
Sheets(i).Range("a2",”Sheets(i).Range("a2").End(xlToRight).End(xlDown)).Copy (Sheets(1).Range("a1048576").End(xlUp).Offset(1, 0))
Next
End Sub
</code>
无论什么时候工作表的记录发生增删修改(包括增加字段),运行以上代码均可即时刷新汇总数据。

三. 用数据整理利器PowerQuery
前面我说了这么多,显然就是为就是为今天的主角--PowerQuery做铺垫的。
“查询增强版(PowerQuery)是一个Excel插件,是Power BI(商业智能)的一个组件。
使用PowerQuery,您可以:
 从你所需要的数据来源提取数据(如关系型数据库、Excel、文本和XML文件,OData提要、web页面、Hadoop的HDFS,等等)
 使用搜索功能,从内部和外部发现相关的数据功能。
 把不同来源的数据源整合在一起,建立好数据模型,为用Excel、Power Pivot、Power View、Power Map进行进一步的数据分析做好准备。
 与他人分享您所创建的查询,让他们可以很容易地通过搜索找到它。”
--摘自微软官方

简单点说,PowerQuery就是PowerBI(商业智能)的一个组件,在Office2016版和Office365版本中,直接嵌入到了Excel(如果是旧版本,可以到微软官方网站下载插件安装)。它是一个数据查询,整理,清洗的工具。而整理数组的目的主要就是为了对下一步PowerPivot的数据建模和分析做准备。不过就算我们不需要进行数据建模和制作仪表盘,也可以利用PowerQuery进行数据处理。

言归正传,在PowerQuery合并多个工作表那就简单多了。因为是对象化操作,操作界面友好,不需要写代码(当然PowerQuery还是可以利用M代码进行更高级的操作,比如如果要合并多个工作簿的话就需要修改一下操作步骤的代码)。

以下演示基于Excel2016专业增强版(不同版本的操作面板可能有差异,但核心的操作命令是一样的)。

第一阶段:

PQ合并工作表1.gif

从数据选项卡进入PowerQuery查询;
当我们进入PowerQuery之后,发现共有31个工作表,其中每个工作表中有一个表。常规做法是建立31个查询,然后通过“追加查询”(Union all)的方式汇总所有数据。

但是,这样做有两个问题:

  1. 建立31个查询的速度比建立1个查询的速度慢的可不止31倍;
  2. 需要一个个地把所有表添加到“追加查询”的列表中,如果有几百个表呢?(都用上PowerQuery了,难道我还会做这些这么没技术含量的重复动作吗?)
    所以,不要选择多个,选择建立任意一个查询就好了。

第二阶段:


PQ合并工作表2.gif

其实我们并非要这一张表的数据,而是要通过这张表向上追溯它的源头。所以,建立查询后,把“源”之后的应用步骤都删掉。然后我们就可以看到“源”数据的真面目了:工作簿里包含的所有表,位于data字段,正是我们要合并的数据。我们只要保留data字段就好了。接着把data字段里的所有table的所有字段都扩展出来。
至此为止,此工作簿中的所有表已经被合并。然而,工作还未完成。

第三阶段:


PQ合并工作表3.gif

虽然所有表已经被合并,但是我们还需要设置好字段:把首行提升到字段。另外,因为每个表的表头都被合并了过来,所以我们还需要通过筛选去除每个表的表头。

最后一步,保存并上载到Excel。Mission Complete!

如果光看文字,可能会觉得复杂,但是实际操作起来就是几分钟的事。而且建立了链接后,任何时候只要刷新汇总表就能得到最新的数据—真正意义上的一键刷新(甚至还可以写一小段VBA代码实现当每次工作表被激活(Activate)时就自动刷新。爽翻了!)。

这个小小的功能,对于PowerQuery而言仅仅是冰山一角罢了。有时候,PowerQuery能轻易地做到一些些在Excel中很费力气的工作。尤其在面对海量数据的时候,Excel函数的运行效率会表现出一定的局限性。

个人之言,PowerQuery确实是查询,整理数据的利器,还有更多好玩的东西可以让大家发掘。有兴趣的朋友可以研究研究。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,311评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,339评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,671评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,252评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,253评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,031评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,340评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,973评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,466评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,937评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,039评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,701评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,254评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,259评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,497评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,786评论 2 345

推荐阅读更多精彩内容