ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-5-3 09:10 | 显示全部楼层
feilanga 发表于 2022-5-2 22:51
首先明确一点,函数和VBA都有存在的意义。也各有局限性。
到底是用函数还是用VBA取决于应用场景和需求。不 ...

“函数和VBA解决问题,我一般用VBA的时候多,是因为我的脑回路不适应函数的逻辑,感觉VBA更符合人的逻辑思考。”  
哈哈,同感,因为 VBA 是 Visual Basic 啊
除了几个常用函数,其他稍复杂点的,不会,一看头脑就会短路

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-5-3 09:11 | 显示全部楼层
feilanga 发表于 2022-5-2 22:51
首先明确一点,函数和VBA都有存在的意义。也各有局限性。
到底是用函数还是用VBA取决于应用场景和需求。不 ...

你说的极对
确实是这样子,速度不是最需要的,解决问题才是
即使代码再烂,或者函数再卡,只要能解决问题就是好的

TA的精华主题

TA的得分主题

发表于 2022-12-7 15:01 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我用vba模仿vlookup ,使用了数组、字典,利用的数组,参考我的帖子,
功能:全面模仿vlookup,大家可以测试一下。

[分享] 用vba写了个模仿vlookup的程序,可以关联多列数据,操作简单 [复制链接]
https://club.excelhome.net/thread-1554821-1-1.html

TA的精华主题

TA的得分主题

发表于 2022-12-9 11:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
image.png


Vlookup慢是因为循环中使用了单元格对象range。换成直接贴Vlookup公式就快了。
至于instr和find没多少意义,因为循环次数都比较多。
就查询来说,数组+字典是基本是首选了。


TA的精华主题

TA的得分主题

发表于 2022-12-9 13:05 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
不能只比较1~2个函数,,实际使用过程中可能函数嵌套函数,要多个中转才能得到结果,,数据量少的时候VBA优势不是多明显,数据量大的时候,,比如几万行原始数据和几千条最终结果数据,由于函数反复计算会导致结果越来越卡,,工作簿大小越来越大。比如这样的函数嵌套 图片.png
而VBA可以一次性读入数据表后一直在内存运算,然后再一次性写入工作表,这能明显感觉到执行效率提高。

TA的精华主题

TA的得分主题

发表于 2022-12-9 14:01 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2023-3-2 15:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
大佬强啊。但字典只能用在没有重复数据的时候。

TA的精华主题

TA的得分主题

发表于 2023-3-2 15:08 | 显示全部楼层
fenghuaxue 发表于 2023-3-2 15:03
大佬强啊。但字典只能用在没有重复数据的时候。

其实单个查询,find是不慢的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-10-7 13:21 | 显示全部楼层
jiangxiaoyun 发表于 2022-12-9 11:47
Vlookup慢是因为循环中使用了单元格对象range。换成直接贴Vlookup公式就快了。
至于instr和find没多 ...

哥,你这个压根不是使用工作表函数好不,你这个其实跟等于1是没有区别的,后面那一串在VBA中就是一个文本,所以速度才快。你试试使用Application.WorksheetFunction.VLookup来引用看看,不卡死你才怪。

TA的精华主题

TA的得分主题

发表于 2023-10-7 16:42 | 显示全部楼层
这种对比没有意义,代码写的跟新手一样,单元格赋值不是一步到位,循环内高度重复使用条件,能快多少?这种比较对就很傻逼,工作表的函数肯定是微软设计好的,优化方面没的说,但你VBA不考虑优化问题,就这样进行比较合适吗?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 20:51 , Processed in 0.039415 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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