3.5 关联表合并:VLOOKUP函数虽好,但难承大数据之重
小勤:大海,现在公司的数据量越来越大,现有一个订单表如图3-34所示,订单明细表如图3-35所示,经常要将订单表的一些信息读取到订单明细表里,给相关的部门去用。原来只有几列数还好,用VLOOKUP函数读取一下就行了,但现在经常要很多数,用VLOOKUP函数做起来就很麻烦了。这个订单表还算少的,还有的表里有好几十列数据。
图3-34 订单主体信息表
图3-35 订单明细数据表
大海:现在是大数据时代了,几十列算少的了。我曾经参与一个信息系统项目,最常用的合同表就有近300列,而且这还不是最多的。
小勤:那怎么办?如果按列顺序读取还好,但很多时候还不是按顺序的,简直就没法处理啊。而且,VLOOKUP函数用多了,电脑还会很卡。
大海:这个时候用VLOOKUP函数的确有点吃力了。虽然VLOOKUP是Excel中极其重要的函数,但在大数据时代,它已经很难承担起类似的数据关联合并的重担了。所以,微软才在Excel里加了Power Query的功能。
小勤:那具体怎么操作呢?
大海:很简单,分别获取“订单”表和“订单明细”表中的数据到Power Query里,然后按以下步骤进行操作:
Step 01 在Power Query查询编辑界面中,选中“订单明细”查询,切换到“开始”选项卡,单击“合并查询”按钮,如图3-36所示。
图3-36 基于订单明细表做合并查询
Step 02 在弹出的对话框中部下拉列表中选择要合并的外部表(订单),如图3-37所示,单击上表(订单明细)中的“订单ID”列的列名选中该列,再单击下表(订单)中的“订单ID”列的列名选中该列,表示订单明细表和订单表之间通过“订单ID”列进行匹配,类似于VLOOKUP函数的第一个参数所选择的单元格所在的列。设置完毕后,单击“确定”按钮。
图3-37 合并查询操作的设置方法
Step 03 此时,在表中多了一个名为“NewColumn”的列,单击该列右侧的数据展开按钮,在弹出的对话框中勾选需要合并到“订单明细”表中的内容,取消勾选“使用原始列名作为前缀”复选框,单击“确定”按钮,如图3-38所示。
小勤:这样真是太方便了,只要先选中匹配要用的列,然后选择要合并哪些列进来就可以了!对了,刚才你不是说可以多列匹配吗?原来用VLOOKUP时可麻烦了,还得先增加辅助列将那些列连接起来,然后再用辅助列来匹配。
大海:在Power Query里不需要了,只要在选择匹配列时按住Ctrl键就可以选择多列了。只是要注意,两个表选择匹配列的顺序要一致,如图3-39所示。
图3-38 展开合并查询结果
图3-39 多列匹配的数据查询
小勤:太好了,以后数据列多的时候匹配取数就太简单了。