ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2006-4-10 16:01 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖已被收录到知识树中,索引项:LOOKUP
实际上,模糊查找的机理都是相同的。除了LOOKUP之外,MATCH/VLOOKUP/HLOOUP这三个函数的模糊查找,也可以利用这个模拟器来模拟。只需改改B9,B13单元格的公式就通用了。

TA的精华主题

TA的得分主题

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

更新后的附件更有助于理解,顶一下。

TA的精华主题

TA的得分主题

发表于 2006-4-10 16:20 | 显示全部楼层

是的。Hlookup直接可以套用这个。(Lookup的数组语法本身就有说明:与Vlookup和Hlookup非常相似,这个模拟器的用法就是Hlookup相似的,即“如果数组所包含的区域宽度大,高度小(即列数多于行数),函数 LOOKUP 在第一行查找 lookup_value。”等价于Hlookup)。

Vlookup无非就是竖向的情况,我本来有个“半途货”验证竖向与横向、向量与数组的Lookup用法一致性的,因过于简单,没必要赘述和发附件了。

注:此观点用于Vlookup、Hlookup、Match的模糊查找情况——即:前两个最后参数为True和match最后参数为1的情况。

更新附件是Officefans的YGZ老版的建议,毕竟,如果面对的读者没有参与这个讨论,一下子突兀地接受“二分法”和这个模拟器就难一些。

[此贴子已经被作者于2006-4-11 9:00:22编辑过]

TA的精华主题

TA的得分主题

发表于 2006-4-10 17:38 | 显示全部楼层
gouweicao78兄辛苦了,我非常佩服你这种精益求精的精神,我们论坛就需要这样的精神。我原来也跟你一样,对ONKEY兄的流程图有疑问,但经检验,他的流程图是正确的。所有的结果都可以根据他的流程图计算出来。包括你附件中“二分法”表中无法理解的#N/A以及你在二分法模拟器中举的例子的结果。所以我认为他的流程图是没有错的。
[此贴子已经被作者于2006-4-10 17:39:41编辑过]

TA的精华主题

TA的得分主题

发表于 2006-4-10 17:52 | 显示全部楼层

to qlz110:

你还认为Onkey流程图中的posi<left的判断不是笔误,而是正确的吗?

这已经很明显了,Posi永远在left的右边或者重合。即Posi>=left。

所以往左上角的流程是根本走不通的。

只有改掉这个地方,才会走得通。我附件中也是对这个地方进行了修正,模拟器正式建立在这个修正的结果之上。

整体上来说,他这个流程图已经相当不错了。没有他这个图,我无法知道Lookup究竟怎样工作。

TA的精华主题

TA的得分主题

发表于 2006-4-11 08:52 | 显示全部楼层
以下是引用[I]gouweicao78[/I]在2006-4-10 17:52:36的发言:[BR]

to qlz110:

你还认为Onkey流程图中的posi<left的判断不是笔误,而是正确的吗?

这已经很明显了,Posi永远在left的右边或者重合。即Posi>=left。

所以往左上角的流程是根本走不通的。

只有改掉这个地方,才会走得通。我附件中也是对这个地方进行了修正,模拟器正式建立在这个修正的结果之上。

整体上来说,他这个流程图已经相当不错了。没有他这个图,我无法知道Lookup究竟怎样工作。

你是对的。^_^

TA的精华主题

TA的得分主题

发表于 2006-4-11 09:03 | 显示全部楼层
再来一个:呵呵,42楼已证实Match(-1)流程错误,地方还是老地方,看看:(Lookup的大于小于其实也是Yes和No对调的情况)。——Onkey楼主是否故意埋了伏笔让大家加深印象啊,呵呵。 已经有几组数据通过验证了,包括42楼的附件。 这个的模拟器原理就简单多了,但已经不是二分法,所以如果每一次运算都记上的话,就不便弄。我再试试看。 模拟器也来了,不过不是那么直观了。
模拟器放在47楼,以便大家查阅。
一开始也有怀疑:Match第3参数忽略或为1(表示按升序排列来算),“那么,是否第3参数为-1的降序情况也是二分法,仅仅是一些左右对调和判断对调呢”,昨晚在Lookup二分法模拟器的基础上改了好几次,却始终弄不出正解。于是再看这个流程图——类似“遍历”,挨个儿找下去,找到就返回。不一定“找遍”。 所以上午想——“会不会是同一个地方出错了呢”试验了几个数据,果然说得通,大家不妨再验证一下。毕竟……我没像Lookup那样摸了那么久。
[此贴子已经被作者于2006-4-11 11:47:23编辑过]

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

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

kONm9KDI.rar

29.75 KB, 下载次数: 231

TA的精华主题

TA的得分主题

发表于 2006-4-11 11:40 | 显示全部楼层

关于查找引用函数“找位置”的心得

结合对Lookup、Match(-1)流程图的修正过程(Hlookup、Vlookup精确查找流程易理解——见15楼),稍作总结:

1、这四个函数的查找机制均不是“遍历”法:

HLookup、Vlookup、Match模糊查找时(最后参数为忽略或1或True),其作用基本等同于Lookup的数组语法。均为“二分法”,即“视数据为升序”而将数据采用对半收敛的方式缩小查找范围,直至找到小于等于查找值X的位置——速度奇快哦。

Hlookup、Vlookup、Match精确查找时(最后参数为0或False或省略剩下逗号),采用从第1个往下一直找直到找到为止,若找到最后一个还没找着,返回#N/A。

Match降序查找时(最后参数为-1),采用也是从第1个往下找:如果第1个就比查找值X小,返回#N/A;否则,如果先找到=X的值,就返回该位置,如果先找到比X小的值(比如在第m个位置),返回该位置的上一个位置(m-1)。

2、无论是Match还是其他三个函数,其核心都是用“比较值”(比较数据区域内的值和查找值X)的方法实现“找位置”——定位!

“位置”找着了,Match返回的是“位置”,其他三个直接返回“值”。

[此贴子已经被作者于2007-5-12 1:33:36编辑过]

点评

fdd
留个记号,这个总结很不错!  发表于 2011-8-24 14:11

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-4-11 14:51 | 显示全部楼层
多谢gouweicao78兄的更正和总结,在下承认确实是在画流程图的时候不小心弄错了,造成大家在理解和讨论流程图上花了不少冤枉时间,特此致歉!

TA的精华主题

TA的得分主题

发表于 2006-4-11 14:56 | 显示全部楼层

呵呵,其实正是这个笔误让更多人加深了对流程图印象,我就是很好的“受益者”!

不过Onkey兄在无先例的情况下能提出这个想法的确很独到!我仅仅是坐享其成罢了。

——我觉得可以这么“顽皮”地理解这个错误: 茅台酒第一次参加国际大赛时,普通的瓷瓶吸引的目光寥寥无几,当有人“一不小心”打破它时,香气四溢!!!
[此贴子已经被作者于2006-4-11 15:00:19编辑过]

点评

fdd
这个比喻非常生动形象!印象深刻!  发表于 2011-8-24 14:10
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-4-16 14:11 , Processed in 0.041172 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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