ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[讨论] 经典应用:用lookup提取混合文本中数字,其中lookup的使用原理

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-2-29 11:43 | 显示全部楼层 |阅读模式

Lookup我了解的是:在升序条件下返回小于或等于查找值的最大值;
结合下面这个案例,使用lookup返回的却是小于或等于查找值的最小值-52.7,是不是可以有以下推论:
1.lookup在实际查找前已经默认筛除了错误值;
2.在降序条件下,lookup就会返回小于或等于查找值的最小值;
如果理解有误则请各位大神多多指教。

案例:
image.png
image.png

TA的精华主题

TA的得分主题

发表于 2024-2-29 12:04 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-2-29 12:13 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
1,对;2,错。lookup采用二分法查询,必须要升序:..., -2, -1, 0, 1, 2, ..., A-Z, FALSE, TRUE;否则,LOOKUP 可能无法返回正确的值。可看我附件案例,测试你第2个猜想。

  1. lookup在查找时,使用的是二分查找,就是对列表元素分成两组(偶数等分,奇数分成(n-1)/2、(n+1)/2两组),之后获取中间的元素进行比较:
  2. 如果小于中间元素,则将查找范围设置为中间元素之前的组,继续使用二分查找,依此循环下去;
  3. 如果大于中间元素,则将查找范围设置为中间元素之后的组,继续使用二分查找,依此循环下去;
  4. 如果与中间元素相同,结果就是中间值。

  5. 因此,如果没有实现对这个列表进行升序排序,这个中间元素获取就会错误,然后选组错误,最后导致查找有误。
  6. 资料来源:知乎 https://zhuanlan.zhihu.com/p/37531415,网站中的第一个评论
复制代码


学习资料:https://club.excelhome.net/thread-161460-1-1.html

模糊查询等级.zip

7.9 KB, 下载次数: 4

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-29 13:27 | 显示全部楼层
魚。。 发表于 2024-2-29 12:04
https://club.excelhome.net/thread-1585248-1-1.html?_dsign=f50f449b

OK,篇幅挺长我先学习学习。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-29 15:04 | 显示全部楼层
魚。。 发表于 2024-2-29 12:04
https://club.excelhome.net/thread-1585248-1-1.html?_dsign=f50f449b

大佬,二分法看完了,我也用二分法推了下没问题,但这组数据也没有遵循升序排列啊,不是要求lookup的二分法查询必须是升序排列吗?

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-29 15:05 | 显示全部楼层
排列方式并不影响用找"极大值"的方法找序列最后一个值吗?
image.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-29 15:17 | 显示全部楼层
Holiday2022 发表于 2024-2-29 12:13
1,对;2,错。lookup采用二分法查询,必须要升序:..., -2, -1, 0, 1, 2, ..., A-Z, FALSE, TRUE;否则,L ...

答主您附件里的lookup是包含第三参数的基础用法,本例中是查询序列中最后一个数据,用Lookup找"极大值",这种方式生成的数据数组往往是降序排列,用二分法也能推出正确的结果,怎么理解啦?我的理解是"在升序的条件返回小于等于查找值的最大值"应该是只针对带第三参数用法,找"极大值"并不适用,应该用二分法来推。

TA的精华主题

TA的得分主题

发表于 2024-2-29 16:18 | 显示全部楼层
IE_Crayon 发表于 2024-2-29 15:17
答主您附件里的lookup是包含第三参数的基础用法,本例中是查询序列中最后一个数据,用Lookup找"极大值", ...

个人理解LOOKUP函数在第三参数也就是返回区域省略的情况,即视为返回第二参数也就是查找区域里的某个值。至于二分法,是LOOKUP函数以及VLOOKUP/HLOOKUP的第四参数为模糊查找时的查找机制,跟是否有第三参数无关。
而“升序排列”不止是对我们写这个函数的要求,同时也是LOOKUP函数“认定你确实这么做了”,二分法确定某个值后拿来跟查找值比较,如果小于查找值,此函数就理所当然的认为答案在后边那一半。对于这个实例来说,虽然是降序排列的,但是LOOKUP从开始动手查找的时候仍然认为你已经升序排好了,所以最终会给你返回最后一个值

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-2-29 21:20 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-2-29 21:34 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
IE_Crayon 发表于 2024-2-29 15:17
答主您附件里的lookup是包含第三参数的基础用法,本例中是查询序列中最后一个数据,用Lookup找"极大值", ...

首先,你把lookup函数分为有第三参数和找“极大值”两种,你这分类是不是有问题?
你要么把它分为有第三参数和无第三参数两类。但后者与找“极大值”那又怎么一样呢?

其次,你说本例中……,然后有推论“2.在降序条件下,lookup就会返回小于或等于查找值的最小值;”。是不是本例,用的是什么数据,跟产生的结果没关系。如果你有一个关于lookup的结论,在你这个数据上成立,在我的数据上不成立了,那这个还是lookup的结论吗?你可以看我重新上传的附件,去掉了第三参数,仍然不是“在降序条件下,lookup就会返回小于或等于查找值的最小值”

第三,事实上,当第三参数忽略时,第二参数同时也将是第三参数,在我上传的附件中你也可以发现这一规律。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-4-27 22:20 , Processed in 0.042068 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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