如何整合Excel表格?

网友解答: 刚看了前面几个答案,除了说用vlookup的方法基本答对之外,人气最高的答案貌似不是提问者所需要的,因为这个答案是指多个工作表的汇总,而不是提问者所需要的横向的合并。如前面的

网友解答:

刚看了前面几个答案,除了说用vlookup的方法基本答对之外,人气最高的答案貌似不是提问者所需要的,因为这个答案是指多个工作表的汇总,而不是提问者所需要的横向的合并。

如前面的答案,vlookup是方法之一,但是,用vlookup有一个问题,就是只能从一个表读取数据到另一个表,而不能实现两个表的完全整合,比如如果A表上有姓名和地址而B表上没有数据的,从B表读取A表的数据就读不出来,相反也是一样。

因此,个人认为最好的办法是用Excel2016的新功能Power Query(如果是Excel2010或2013可以到微软官方下载插件)。具体实现方法如下:

vlookup虽好,然难承大数据之重【PQ关联表合并】原创 大海 Excel到PowerBI

小勤:大海,现在公司的数据量越来越大,现在有订单表和订单明细表,经常要将订单表的一些信息读取到订单明细表里,给相关的部门去用,原来只要几列数还好,vlookup读一下就是了,但现在,经常要很多数,用vlookup要累屎了。这个订单表还算少的,还很多其他的一张表里都好几十列了。

大海:呵呵,大数据时代嘛。几十列算少的啦,我上次一个项目上的合同表,有差不多300列,而且这还不算真正多的。

小勤:那怎么办啊!有时候按列顺序读还好,很多时候还不是按顺序的,简直就没法整啊。而且,满篇公式的时候,工作表都要跑不起来了。

大海:这个时候用vlookup的确有点吃力了,虽然vlookup是Excel中极其重要的函数,但是,在大数据时代,已经很难承起数据关联合并的重担了,所以微软才在Excel里加了PowerQuery的功能嘛,点点点,你想要哪些列就哪些列。

小勤:这么神奇?

大海:这段时间PowerQuery的神奇你也不少见了,不用惊讶。现在就告诉你怎么弄。

Step-1:获取订单表数据并仅创建表连接上载

Step-2:获取订单明细表数据并仅创建表连接上载(需要直接上传结果的可以选择表)

Step-3:回到PowerQuery界面(当然,前面一个步骤如果没有关闭并上载的话,不需要这一步)

Step-4:选择要接入外部数据的查询,单击【开始】-【合并查询】

Step-5:选择要接入的外部表、选择两表之间用于匹配的列(可以是多列匹配,文末以另一个例子该步骤的附图方式说明)

Step-6:展开要接入表的列信息,选择要接入的列以及列名显示方式(是否加前缀)

Step-7:查看接入的结果,上载数据

Step-8:改变数据的加载方式(由“仅创建连接”方式改为“表”,若前面订单明细不是以“仅创建连接”的方式创建,该步骤不需要)

小勤:这样真是太方便了,只要选一下匹配要用的列,选择一下要接入哪些列就搞定了!对了,刚才你不是说可以多列匹配吗?原来用vlookup的时候可麻烦了,还得增加辅助列先将那些列连接起来,然后再用辅助列来匹配。

大海:是的。在PowerQuery里也不需要了,只要在选择匹配列时按住ctrl键就可以选择多列了。只是要注意两个表选择匹配列的顺序要一致。如下图所示:

小勤:太好了,以后数据列多的时候匹配取数就太简单了。

以上是使用Power Query代替vlookup实现的两表合并的基本用法(虽然步骤看起来很多,实际关键步骤就2个,都是鼠标点点点就瞬间完成的事情)。

那么,前面提到的,如果两个表间存在的差异数据都要显示,怎么办呢?只要对其中的表间连接类型按以下情况进行适当的选择即可:

左外部:只要订单表(左表)里有的数据,结果表里都会有,但有些因为明细表(右表)里没有,所以匹配过来后会成为null(空值)

右外部:和左外部相反,即明细表(右表)里有的数据,结果表里都会有,但因为订单表(左表)里有部分数据没有,所以合并后用null值表示。

完全外部:不管哪个表里的数据,全都进结果表,对于双方都有一些对方没有的,合并后显示为null值。

内部:跟完全外部相反,只有两个表都有的数据,才进结果表。

左反:只有订单表(左表)有而明细表(右表)没有的数据,才进结果表。这种用法经常用于检查如哪些订单缺了明细表等。

右反:和左反相反,只有明细表(右表)有而订单表(左表)没有的数据,才进结果表。

欢迎关注【Excel到PowerBI】我是大海,微软认证Excel专家,企业签约Power BI顾问让我们一起学习,共同进步!

网友解答:

月末了,各部门报过来的数据,如何合并到一个文件里?

过去,我们只能使用VBA或编写SQL语句。

现在,我们只需点击几次鼠标,书写一个公式。

6个工作簿,数据结构都是一致的,我们需要把她们合并到一个工作簿里。

【数据新建查询从文件从文件夹】。

【浏览】,找到需要合并的文件夹。

文件夹下每一个工作簿都被合并在一起。首列“内容”显示【Binary】,是二进制数据的意思。

最后一列显示这些工作簿的地址。中间几列分别表示工作簿名称、后缀名、访问时间、修改时间、创建时间和文件属性。

点击【编辑】,进入【查询编辑器】,中间那几列无用,所以右键单击【列标签删除列】。

如果此时直接点击二进制首列的"展开按钮",会出现错误提示。

这是因为,二进制数据无法直接提取。我们需要书写一条公式。

在【查询编辑器】点击【添加列添加自定义列】。

在【添加自定义列】对话框,保留默认的【新列名】,在【自定义公式】列表框录入公式:

=Exel.Workbook([Content],true)

注意,公式函数严格区分大小写(首字母大写)。

函数的第一个参数是需要转换的二进制字段,这个字段可以在右侧列表框双击选择,不必手工录入。

函数的第二个参数是逻辑值,如果原数据有标题行,这里应该添写true。

点击【确定】后,【查询编辑器】新增一列,数据类型显示为【Table】,右侧的【应用步骤】列表显示了刚刚进行的步骤。

随便选择【Table】数据的一个单元格,下方预览区会显示这个表的结构。

点击新增列标签右侧“展开按钮”,选择【扩展】。

每一个【Table】表会按列方向展开。其中Data数据类型仍然显示【Table】。

我们再次点击【Table】数据列标签右侧的“展开按钮”。

展开的数据已经将文件夹下所有工作簿合并在一起。

删除一些不需要的列。

只留有效数据列,点击【开始关闭并上载】返回Excel。

所有数据都已经合并到一个工作簿中。

得到的合并数据实际上是一个【查询】,右键单击可以【刷新】数据。

当文件夹下原工作簿内容变更,合并工作簿只要【刷新】一次,即可更新数据。

展开【Table】数据时,如果选择【聚合】,得到的数据会将同类项求和或计数。

怎么样,是不是比VBA要简单的多啊。

标签: