在上一篇推文中,我对百万行 vlookup 做了简单的尝试。
呆呆:运行一百万行 vlookup 是种怎样的体验?zhuanlan.zhihu.com结论:如果只是单纯的进行 vlookup 计算,在开启多线程加上模糊匹配小技巧的前提下,Excel 勉强胜任。(运算时间一分钟内,根据电脑硬件水平浮动)
但是对于多条件 vlookup,也就是数组公式,上万行数据就已经招架不住了。
其实这情有可原,Excel 的设计理念就不是为大数据而生的。那在不动用数据库的前提下,微软怎么满足用户更大规模(相对普通用户而言)的运算需求呢?答案就是 Power Query!
心急的你是不是已经准备去下载了,不要慌,在 Excel 2016(或以上)版本中,已经内嵌了这个功能
长话短说,我们现在就开始吧!
1.生成数据源
跟上一篇推文一样,我们还是用 Python来生成;不过这次我调用了 Faker 库,让数据更接近真实
import
生成这个数据,旧电脑用了 400 秒,更旧的电脑用了近1600秒 ……
生成后的数据长这样
左边 A 至 F 列是一串人物信息,相当于条件,G 列表示一个金额,相当于结果;
右边的 I 列至 N 列是乱序的人物信息,我们需要匹配到 G 列的金额;
聪明的你应该明白我的意思
2. 用 Power Query 实现多条件查询
首先选择源数据,也就是左边部分,点击数据标签的从表格
弹出创建表的对话框
确定后会调出 Power Query
右侧可以重命名,下面记录了操作步骤
关闭并上载至
我们需要先匹配条件,所以创建连接即可,没必要创建表
创建好后,右边会显示
选择右边,我们要匹配的信息,同样创建表
点击这个三角形可以展示我们所有的查询,也就是上传到 Power Query 的表
关键步骤,点击合并查询
分别选中两张表的条件字段,等待计算完成
匹配完成
这时候,多了一列字段
选择我们要匹配的列
加载中
完成了!
将结果从 Power Query 中上载到 Excel 里面,这次选择关闭并上载就好了
发现只有一小部分数据,别着急
右边会显示加载进度
完成啦!
然后直接保存成 xlsx,或者 csv 就好了
3.结论
Power Query 完全可以胜任百万行多条件查询任务,运算量更低的单条件 vlookup 就更不在话下了。
而且相比其他软件或者数据库,Power Query 的优势在于:
a. Excel 2016内置,不用额外安装
b. 不用写任何公式
c. 性能足够,处理速度尚可
当然,对于 Power Query 我也只是学了个合并查询,还请各位数据大佬多多指点!