用VBA写一个好的xlookup(vlookup)工具-01综述
xlookup(vlookup)是Excel中的一个函数,这个函数有几个缺陷,虽然能用一些取巧的办法做,但是还不够好:
缺陷:
- 运算占用资源大,当数据量大的时候,匹配速度是可以喝个茶再泡个温泉看有没有结果的,比如20万行数据对应50万行数据的匹配的时候,初次匹配时间可能比较少,但是如果不小心重新排序,或者激活自动重算,那么糟糕的情况下用I7处理器的8核16线程匹配甚至需要1个小时。
- 不能直观的无序匹配,虽然目前2021已经更新了一个xlookup函数,估计当前还是有很多电脑是没有更新到新版本的,而且新版本做的这个函数还不能用到没有装这个版本的office中使用。如果使用if函数推算,则会更卡顿,如果复制列,那这数据表格就可以大的去了。而且xlookup依然还是有有1所提出的问题。
- Excel自动激活公式的逻辑,如果不小心触发了,那么所有的公式就要重新运算一次,即算是转值,也要重来一次,时间可是十分宝贵的。
综上,如果把xlookup(vlookup)这个用VBA写成工具,直接生成结果,岂不是爽歪歪。毕竟,查到了之后也不是时刻更新源数据。
这个文章有点长。需要结合我之前的几个文章中已经有的成果,不够的我也会另起文章,请大家直接找找哈。
先上界面:
这个工具的效率大概是20万行数据对应50万行数据大概是 15秒 ,50万匹配50万大概是 30秒 。建议64位系统使用,32位系统有可能提示内存不足(一般是Excel文件本身较大造成的,建议升级64位office哦)。唯一的缺陷就是不能跨Application使用,这也是操作系统限制的,举例说明,如果有一个Excel文件是在文件夹中打开的,另一个文件是通过Everything搜索打开的,在任务管理器中我们能发现打开了多个(案例是2个)Excel的程序(即多个Excel的Application)。
这时候,不同的Excel的Application不能在同一个Excel界面的工具框内获取到。当然了,函数形式的xlookup(vlookup)也做不到。嘻嘻。
功能介绍(也是知识点):
- xlookup(vlookup)功能(核心功能,字典、数组等)
- 获取激活的文件名及表名(用于实现在不同的文件和表之间执行vlookup功能)
- 列的快速切换(便于有多列执行时候的快速切换)
- 获取 特定列 的 最后一行( 用于快速定位到最后一行,也可以自定义要匹配的尾行,便于精准执行匹配动作)
- 设置数据自动保存与读取(便于查看匹配是否错误,重复匹配等)
- 清空数据及还原(又快,又防止错误点击)
- 形成内部调用模块(Ribbon)
接下来我将分几期和大家一步步慢慢絮叨并实践写出这个工具的各种功能。
一套优雅的工具使用方式 :
小不懂坚持分享VBA实战代码,您会发现每个项目都是真实需求,每一段文字都是亲手研磨,并且十分荣幸与知Sir们在此共同进步。有兴趣一起见证并共同成长的知Sir们,请不吝 关注 、 喜欢 、 分享 和 收藏 ,您的每次点击都是在为获得更高质量、更优秀的内容投票哦。同时恳请并鼓励大家把文章中表达不到位,内容错误,代码有失水准的地方,指导订正,在此先诚挚的道谢。哦,对了,评论区是划水的好地方,小不懂当然也是划水能手,让我们荡起双桨 ^_^