ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[原创] 二分法查找原理终极解析

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2021-9-10 11:10 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 三秋之叶 于 2021-9-11 11:24 编辑

关于VLOOKUP/HLOOKUP/LOOKUP/MATCH等支持二分法查找的函数,一直困扰着我们,似乎是个无尽的黑洞,充满了神秘,但只要靠近,就会立马被无情的吞噬。希望以LOOKUP函数作为举例,所有情况一次性给大家说个明白:
我重新编辑了一下,更多例子见附件哈~

image.png
image.png



规则不复杂,为了便于大家理解,我举了很多例子,一共就2个规则:规则一、二

规则一:依次拿二分值与查找值比较

1.1.二分值<查找值,查找下半区
1.2.二分值>查找值,查找上半区
1.3.二分值=查找值,可能产生二分点滑动【返回(滑动)二分点对应的值】
1.4.二分值与查找值数据类型不匹配,会产生二分点滑动【如果下方存在与查询值数据类型相同的数据,则此位置为新的二分点,继续执行上面的1.1~1.3规则;如果下方不存在与查询值数据类型相同的数据,则查找上半区,继续执行上面的1.1~1.3规则】


规则二:执行规则一到无法执行为止,返回二分点对应的值

2.1.【最终二分值<=查找值】,返回最终二分值对应的值
2.2.【最终二分值>查找值】或【最终二分值与查找值数据类型不匹配】,返回上轮二分值对应的值,如果【二分值>查找值】或【二分值与查找值数据类型不匹配】,则再返回上一轮,以此类推,直至符合2.1【最终二分值<=查找值】,返回此时二分值对应的值,如果一直不符合2.1【最终二分值<=查找值】,则返回#NA

我发现的这个规则,可以解释LOOKUP在二分法查找中所有的现象

首先执行规则一,直至不能执行为止,然后执行规则二






二分法查找原理终极解析.zip

31.73 KB, 下载次数: 99

老版

二分法查找原理终极解析V1.0.zip

35.59 KB, 下载次数: 143

新版

评分

29

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-9-10 13:35 | 显示全部楼层
本帖最后由 三秋之叶 于 2021-9-12 16:35 编辑


image.png
补充整行整列情况的例子,执行的逻辑依然符合规则一、规则二,配合25楼的流程图,口感更好。例子如下:

整列引用

image.jpg

整行引用

image.jpg


评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-9-12 13:38 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2021-9-25 21:02 | 显示全部楼层
二分法查找原理终极解析V1.0.xlsx的规则表里,F23应该填9,F22留空。E96应该是7。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2021-9-10 11:12 | 显示全部楼层
小姐姐发的帖子,先顶再看

TA的精华主题

TA的得分主题

发表于 2021-9-10 11:16 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-9-10 11:20 | 显示全部楼层
threadsharp 发表于 2021-9-10 11:16
果然是个辣么厉害的小可爱

你是最懂我的人,昨天就GET到了我的思路

TA的精华主题

TA的得分主题

发表于 2021-9-10 11:26 | 显示全部楼层
非常感谢楼主,收藏学习。。。。今天没花了,明天补上~~~

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-9-10 11:29 | 显示全部楼层
cinlo 发表于 2021-9-10 11:26
非常感谢楼主,收藏学习。。。。今天没花了,明天补上~~~

还是你上天的帖子,触发了我搞明白的灵感和动力,谢谢

TA的精华主题

TA的得分主题

发表于 2021-9-10 11:43 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
三秋之叶 发表于 2021-9-10 11:29
还是你上天的帖子,触发了我搞明白的灵感和动力,谢谢

你的研究精神值得学习。。。
非常好的解释了参数2乱序的时候LOOKUP返回的结果。。。
你太牛了~~~~~~~~~~~~

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-9-10 15:27 | 显示全部楼层
进一步完善和补充,新来的下载这个哈~

二分法查找原理终极解析V1.0.zip

35.59 KB, 下载次数: 65

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2021-9-10 16:54 | 显示全部楼层
楼主的钻研精神值得钦佩,为广大同胞讲解的甚是清晰,值得赞扬。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-20 13:39 , Processed in 0.059649 second(s), 21 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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