ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 7208|回复: 29

[分享] 几种查询方式速度对比,发现VLOOKUP并不比字典慢

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-5-1 13:09 | 显示全部楼层 |阅读模式
本帖最后由 lizhipei78 于 2022-5-1 13:10 编辑

一直以为用VBA查询匹配会快很多,所以我经常运用VBA来求值,即使VBA内没有的函数也调用Excel内置的函数来使用,如Application.WorksheetFunction.VLookup等函数,今天闲着没事,对几种查询匹配的方式来进行效率对比。

一是VBA内,使用了字典,FIND函数,INSTR函数,Application.WorksheetFunction.VLookup函数

二是直接用Excel自带的函数,VLOOKUP,INDEX+MATCH,LOOKUP,XLOOKUP
数据库为25000多条,没有重复项

结果是:

一、VBA方法,字典最快,其他方法均慢,相差60多倍.
二、函数法:我原来以为Excel自带的函数会很慢,结果大出意外,不管是WPS还是微软OFFICE,VLOOKUP函数一点不卡,相当于秒出结果,跟字典一样的高效率,INDEX+MATCH效果也差不多。LOOKUP速度很慢,论坛大神说这个是二分法查找,速度会比VLOOKUP快,结果大相径庭。至于XLOOKUP新函数,在WPS中跟LOOKUP一样慢,但是微软OFFICE的话,速度稍微比VLOOKUP慢一点。

所以那些人说VLOOKUP已死的人,目前来看不大可能,在大数据面前VLOOKUP还是强的一匹。但是让我想不通的是,在VBA内使用VLOOKUP速度为什么会这么慢,可能是微软加强了VLOOKUP函数的运行机制,而VBA中还没有更新。

大神们,除了以上方式匹配,还有什么其它的方法吗?看看速度如何。

几种查询方式速度测试(字典-vlookup-find-instr).rar (579.17 KB, 下载次数: 304)



TA的精华主题

TA的得分主题

发表于 2022-5-2 10:29 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
前提是这些应用是通用的功能才有可比性,
同样是查询,也有各种各样的查询,及结果要求
假如,只是假如,某个功能只能以字典的方式实现的,而用公式是无法实现的时候,公式的速度再快又有什么意义,并不能实现这个功能
楼主列出的,都有各自的犄点与优势或指定场境,否则微软也没必要搞出这么多公式函数了
其他的方法同样道理

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-5-2 10:36 | 显示全部楼层
aman1516 发表于 2022-5-2 10:29
前提是这些应用是通用的功能才有可比性,
同样是查询,也有各种各样的查询,及结果要求
假如,只是假如, ...

说的对,本身就是为了查询,因为查询匹配是日常最实用的
以前我一直用的LOOKUP(1,0/(条件1),结果),这种查询,现在来看这效率真是不行,以后还是VLOOUP了
VBA中查询还是字典最好用了
其实我只想说单纯的查找匹配,VLOOKUP还是最实用的,因为他简单粗暴,且效率高

TA的精华主题

TA的得分主题

发表于 2022-5-2 11:05 | 显示全部楼层
如果算法不经特别设计的话,某些情景和数量级中,Vlookup速度可以吊打一般字典方法。。。
我也是菜鸟,说错了莫怪。。。可能是我写得烂才得出的结论,哈哈哈

TA的精华主题

TA的得分主题

发表于 2022-5-2 11:06 | 显示全部楼层
lizhipei78 发表于 2022-5-2 10:36
说的对,本身就是为了查询,因为查询匹配是日常最实用的
以前我一直用的LOOKUP(1,0/(条件1),结果),这种 ...

那升级版的“XlookUp”效率是不是也不错呢

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-5-2 14:00 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
zerada 发表于 2022-5-2 11:06
那升级版的“XlookUp”效率是不是也不错呢

在微软OFFICE中,没有VLOOKUP快,你自己也可以测试一下
在WPS中,XLOOKUP非常慢

TA的精华主题

TA的得分主题

发表于 2022-5-2 14:26 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
如果表都是非常规范的,一定是数据库比excel快上百倍。

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-5-2 17:27 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
cui26896 发表于 2022-5-2 14:26
如果表都是非常规范的,一定是数据库比excel快上百倍。

一般人用不到数据库,至多也就几万条数据
如果数据上百万的,那肯定不是个人的了,是公司企业之类的,那人家肯定会有对应的岗位,肯定不会用Excel处理数据

TA的精华主题

TA的得分主题

发表于 2022-5-2 22:25 来自手机 | 显示全部楼层
函数是多线程的,VBA运算是单线程的

TA的精华主题

TA的得分主题

发表于 2022-5-2 22:51 | 显示全部楼层
首先明确一点,函数和VBA都有存在的意义。也各有局限性。
到底是用函数还是用VBA取决于应用场景和需求。不单单是快慢的问题。
很多时候函数可以顺利解决使用的时候,我想很少人会想到用VBA
凡是想用VBA的,都是因为函数不能很好的解决问题的情况下才考虑使用VBA
VBA中使用循环,不一定比调用VBA函数速度快。但是很多时候速度并不是第一位考虑的,是否解决了问题才是第一考虑要素。哪个用的熟练用哪个
代码优化总是在解决问题以后,对速度不满意的情况下,一般情况下不需要考虑优化。
函数对应各种场景使用才推出各种不同的查找函数,各有所长,选择适合的即可
函数和VBA解决问题,我一般用VBA的时候多,是因为我的脑回路不适应函数的逻辑,感觉VBA更符合人的逻辑思考。而一些数据处理,并不是单单的VLOOKP可以解决的。往往问题总是比较复杂。还有,数据量稍微大一点点,会卡死。这里的大也不过几千行数据。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-17 20:36 , Processed in 0.047100 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表