ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

请教:那些查找函数对速度的影响最小?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-4-4 11:13 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
各位大侠,请教一个问题:涉及到大量的查找时,该如何加快查找速度?特别是跨工作薄时。 不知那个查找孙函数或是其它函数可以实现查找功能而且对速度的影响最小? 谢谢。。。。。。。。。。。

TA的精华主题

TA的得分主题

发表于 2006-4-4 11:34 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Match/Vlookup/Hlookup

TA的精华主题

TA的得分主题

发表于 2006-4-4 11:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
版主还漏了一个lookup,呵呵。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-4-4 12:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

谢谢gvntw和gouweicao78

但它们都好像易失函数来的吧。(查找函数都好像是易失的函数吧?易失对速度的影响好像是挺大的?)

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-4-4 12:07 | 显示全部楼层

如果定义名称会不会加快速度呢?

TA的精华主题

TA的得分主题

发表于 2006-4-4 12:32 | 显示全部楼层

MATCH/LOOKUP/VLOOKUP/HLOOKP都不是易失函数

INDEX在97版以前是易失函数,现在不是。

常用的易失函数是:INDIRECT,OFFSET,NOW,TODAY,RAND,等

使用名称不会使速度变快,但可以简化公式,适当减小文件体积。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-4-4 12:54 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

谢谢四哥及前面二位大侠。。。看来我还要加强基础方面的认识。。。。

TA的精华主题

TA的得分主题

发表于 2006-4-4 13:36 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

关于函数的效率问题,可以分几大类来说:

一,LOOKUP函数
它的查找机理使用“二分法”,即从数据区域的中间开始查找,找到一个就停止。详见onkey的相关帖子
对于N个数据,它的平均查找次数是LOG(N,2)【即以2为底的N的对数】


二,VLOOKUP,HLOOKUP,MATCH的模糊查找
这几个函数有模糊查找和精确查找两种。
模糊查找的运行机理、查找速度和上述LOOKUP一样,都是二分法查找,次数为LOG(N,2)


三,VLOOKUP,HLOOKUP,MATCH的精确查找
他们的精确查找采用顺序查找,即从头到尾逐个查找,但只要找到一个,就停止。所以它们的平均查找次数是:N/2


四,SUMIF和COUNTIF
这两个不是查找函数,但在讲到函数的效率时,不能不说它。
这两个函数可以说是最“傻”的。他们采用“遍历算法”,就是说,你给它多大范围,它就逐个把所有单元全部查一遍。所以他的查找次数是N

综上所述,由于N>N/2>LOG(N,2),所以LOOKUP函数以及VLOOKUP/HLOOKUP/MATCH的模糊查找效率是最高的,而几个函数的精确查找速度次之,SUMIF和COUNTIF最慢。

还有一个最影响速度的问题是易失函数。
易失函数包括:OFFSET,INDIRECT,TODAY,NOW,RAND,CELL,INFO等
只要在工作表中使用了这些函数,整个工作表就会不停地全部重算,是最影响速度的一类函数。


除了易失函数,还有一种是“易失性操作”:如自动筛选、单击或双击改变行高、列宽(不含手工改变)等,他们和易失函数一样,也会引发工作表的全部重算。


[此贴子已经被作者于2006-4-4 13:39:59编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-4-4 14:24 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
再请教一个问题:一个表内大量使用VLOOKUP或是INDEX(MATCH)好像反应的速度的慢很多,这是为什么?

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-4-4 14:26 | 显示全部楼层
3mVgDwDL.rar (22.75 KB, 下载次数: 19) 再请教一个问题:一个表内大量使用VLOOKUP或是INDEX(MATCH)好像反应的速度的慢很多,这是为什么?如附件。谢谢
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-24 18:16 , Processed in 0.041981 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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