ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] [函数用法讨论系列10] LOOKUP的查找策略!

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2012-3-3 03:17 | 显示全部楼层
本帖已被收录到知识树中,索引项:LOOKUP
gouweicao78 发表于 2007-5-16 13:00
QUOTE:以下是引用yjgsz在2007-5-16 7:11:34的发言:我想说,二分法的基本原理,是不是还适用。1、数列按升序 ...

QUOTE:
以下是引用yjgsz在2007-5-16 7:11:34的发言:
我想说,二分法的基本原理,是不是还适用。
1、数列按升序排序(或“视升序排序”)——这一点在前面我已经说明很多次了,理解是一致的。
2、每次先取中间位置值比较,中间位置=int((首位数位置+末位数位置)/2)——理解是一致的。
3、数列中每个数值不会被重复查找,即不会被查找第二次。——这一点你严格按二分法,Lookup不严格按二分法,所以我说只是一个“主流方向”并不代表完全。
4、每次收敛范围是上次收敛范围的子集。——基本一致,但Lookup有例外判断,与第3点同,Lookup不严格按二分法。


这是陈版主的回复。

对于“二分法”,我的直观理解是:
在输供电系统中,如何判断一条输电线在哪里断路。
办法:先从一头到线路中间测量,如果不通则断路位置在这半截里面;如果通路,则断路位置在另外半截。依此类推。

根据我的这个例子再来看二分法的基本原则:
1、数列按升序排序(或“视升序排序”)——这点如何在输供电系统中体现?(线路中不能出现并联情况?)
2、每次先取中间位置值比较,中间位置=int((首位数位置+末位数位置)/2)——这点是肯定的。
3、数列中每个数值不会被重复查找,即不会被查找第二次——当然不需要查第2次
4、每次收敛范围是上次收敛范围的子集——这不一定,如果断路的位置不在这次收敛的范围之内,下一次收敛就不是上次收敛范围的子集了。

TA的精华主题

TA的得分主题

发表于 2012-3-4 09:49 | 显示全部楼层
Wer-mf 发表于 2012-3-3 03:17
QUOTE:
以下是引用yjgsz在2007-5-16 7:11:34的发言:
我想说,二分法的基本原理,是不是还 ...

根据对流程猜想的修正、论证,特别是willin2000兄的流程图,LOOKUP并不是完全按严格的“二分法”。所以,如果非要纠结的话,那么就把原理称为“类二分法”算了。

TA的精华主题

TA的得分主题

发表于 2012-3-4 16:05 | 显示全部楼层
gouweicao78 发表于 2012-3-4 09:49
根据对流程猜想的修正、论证,特别是willin2000兄的流程图,LOOKUP并不是完全按严格的“二分法”。所以, ...

噢~这么多年的帖子了。
期间恐怕被人问起无数次,陈老师还能再来回复~

还是要称赞一个!

================
关于Lookup的二分法,
我这里会用就行了,至少目前懒得深究。
就这么地了,多谢楼上诸位前辈啦!

TA的精华主题

TA的得分主题

发表于 2012-3-4 17:39 | 显示全部楼层
{:soso_e112:}好久没来,偶然路过,有缘就谈谈呗。

我在其它关于LOOKUP的帖子里,都提倡的是“用”它,而不是强调去深究这个原理。

TA的精华主题

TA的得分主题

发表于 2012-3-11 15:07 | 显示全部楼层
感谢分享,一直只用vlookup,lookup和hlookup都没碰过,希望能从您得到进步

TA的精华主题

TA的得分主题

发表于 2012-3-12 21:55 | 显示全部楼层
这都是做理论研究似的

TA的精华主题

TA的得分主题

发表于 2012-3-13 15:53 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-3-16 10:13 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-4-1 20:45 | 显示全部楼层
实际工作中在2份表格中匹配,VLOOKUP确实用的较多,且基本是精确匹配.
LOOKUP有时可以代替IF使用,比如:=IF(A1<60,"不及格",IF(A1<70,"合格",IF(A1<90,"良好","优秀"))) 
          可用以下代替:=LOOKUP(A1,{0,"不及格";60,"合格";70,"良好";90,"优秀"})

TA的精华主题

TA的得分主题

发表于 2012-4-8 15:20 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
这些精华贴子都被提问帖淹没了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 00:07 , Processed in 0.045135 second(s), 5 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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