PowerQuery数字生活新工具新观念

比对Excel数据,何时用vlookup函数,何时用PowerQ

2019-04-03  本文已影响12人  PowerQuery

在Excel中要比对两列数据,我们最常用的是vlookup函数,估计很多人已经对这个函数用得滚瓜烂熟了。

既然vlookup函数如此好用,又有什么理由去用PowerQuery呢?

且听我慢慢道来。

如果只是偶尔一次的数据比对,请用vlookup函数

最常见的是偶尔比对一下班级中有哪些学员没报名参加某活动,或比对同一个客户是否在多个表中出现。

在这种情况下,比对只是偶尔发生。很显然,用vlookup函数是最简单最快捷的。

如果经常需要比对数据,请用PowerQuery来比对

比如每天都要比对两个表乃至N个表,或者每周都要比对,这种重复工作就交给PowerQuery来处理好了。

如果原始数据非常重要,需要尽量保证无损操作,还是建议用PowerQuery

有时候原始数据太重要,我们要避免对原始数据的任何有损操作,以免误操作之后破坏了原始数据,那么,我还是建议用PowerQuery,因为PowerQuery可以对原始数据进行无损操作——连它所在的位置都不用动一分一毫,更不用说直接在它上面进行有损操作了。

当然,用vlookup函数也能进行无损操作,比如复制原始数据到新的文件,或用公式引用原始数据文件的内容到新的文件,但操作起来比较复杂。

一个PowerQuery比对数据的例子

由于vlookup的教程实在太多,我就不再拾人牙慧重复一遍了。直接给出一个PowerQuery比对数据的例子。

假设:我们有一份《班级学员名单》,

班级学员表名单

还有一份《报名表》,

报名表

这是两个独立的Excel文件,分别放在不同文件夹下。

需求是找到哪些班级学员还没报名,并且,把《报名表》里不是本班的人标记出来进行下一步处理。

首先,分别引入《班级学员表》和《报名表》两个Excel文件到PowerQuery。

操作:新建一个Excel文件,目的是不对原始文件本身进行任何改动。然后在Excel中点击【数据】选项卡,选择【新建查询】-【从文件夹】-【从工作簿】引入原始文件。

比对Excel数据,何时用vlookup函数,何时用PowerQuery?

在弹出窗口中找到需要引入的《班级学员表》,然后直接点“编辑”,

比对Excel数据,何时用vlookup函数,何时用PowerQuery?

对它进行简单操作:在“查询设置”的“属性”下修改“名称”为“班级学员表“,免得和后面引入的报名表搞混;并将第一行提升为标题。

比对Excel数据,何时用vlookup函数,何时用PowerQuery?

同样的操作,引入《报名表》。最后结果类似于下面这样:

比对Excel数据,何时用vlookup函数,何时用PowerQuery?

PowerQuery中处理两个表格数据比对的思路。

当我们对两个表格进行数据比对时,可以把这两个表格看作两个集合,这样,对两个表格的比较就变成寻找两个集合的关系:

比对Excel数据,何时用vlookup函数,何时用PowerQuery?

我们把班级学员名单想象为左边的绿色部分,报名表想象为放在右边的蓝色部分,这样,没报名的学员,我们可以简单理解我们能看得见的绿色部分。在PowerQuery中,用Table.NestedJion()函数的"JoinKind.LeftAnti"参数来表示这种关系。

新建一个空白查询,直接输入下面的代码即可得到未报名的学员:

= Table.NestedJoin(班级学员表,{"姓名"},报名表,{"姓名"},"报名表",JoinKind.LeftAnti)

比对Excel数据,何时用vlookup函数,何时用PowerQuery?

那么,反过来,Table.NestedJion()函数的"JoinKind.RightAnti"就表示只存在于右边表(报名表)的元素:

= Table.NestedJoin(班级学员表,{"姓名"},报名表,{"姓名"},"报名表",JoinKind.RightAnti)
比对Excel数据,何时用vlookup函数,何时用PowerQuery?

其实,我们可以通过变换【= Table.NestedJoin(班级学员表,{"姓名"},报名表,{"姓名"},"报名表",JoinKind.LeftAnti)】中“班级学员表”和“报名表”的位置,就直接得出了不在班级学员表中的报名人员:

  = Table.NestedJoin(报名表,{"姓名"},班级学员表,{"姓名"},"报名表",JoinKind.LeftAnti)

加载数据到Excel表格。

接下来把生成的结果加载到Excel表格,选中要加载的查询,点击“加载到”按钮,

比对Excel数据,何时用vlookup函数,何时用PowerQuery?

在弹出窗口中选择加载到“表”:

比对Excel数据,何时用vlookup函数,何时用PowerQuery?

然后再重命名下加载数据的sheet名称,免得搞混,即完成。

辛苦了一次,怎么终生轻松呢?

用PowerQuery处理表格数据比对的最大理由是可以辛苦一次,终生轻松,这样遇到同样的比对工作,就不用重复的步骤走了一遍又一遍了。

假设我这个比对工作要天天做、周周做、月月做。

现在我完成了今天的比对工作。

明天,新的报名表来了,我要怎么做呢?

我只需要把今天的报名表删除,把明天的报名表放到同样的位置(比如桌面),然后打开我刚才建立好的模型文件,刷新一下即可:

比对Excel数据,何时用vlookup函数,何时用PowerQuery?

而班级学员表因为不会经常变动,所以我根本不用管它,保持在原位即可。就算有新增班级学员,我编辑该文件将其新增进去即可。

甚至还有更简单的办法:如果我有很多班级和报名表,每个班有个单独的文件夹,下面有班级学员表和报名表,我只需要借助PowerQuery的参数表格结合Excel的Cell()函数,建立来自于文件夹的数据源。

然后,每次需要某个班级的最新结果,就把该模型文件丢到该班级所在的文件夹,打开刷新,即可获取到最新结果。

结语

如果只是偶尔比对一下数据,直接用vlookup函数,便宜又实惠;如果经常要比对数据,那么可以试试看“辛苦一次,终生轻松”的PowerQuery大法。

当然,PowerQuery还有很多很多绝技。

有兴趣的不妨试试看,如果您尝试过程中遇到问题,请随时留言。

上一篇下一篇

猜你喜欢

热点阅读