ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[讨论] LOOKUP个人看法

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-4-26 21:44 | 显示全部楼层
多谢丢丢老师指导,查找到目标值后就向右查找了,不需要减半减半的查了
测试=LOOKUP(9,{1,9,9,9,9,9,9,9,9,9,3},{"A","B","C","D","E","F","G","H","I","J","K"})  结果为倒数第二个  "J"
=LOOKUP(9,{1,9,9,9,9,9,5,6,7,8,9},{"A","B","C","D","E","F","G","H","I","J","K"})  中间值就是9,而右侧不是9,结果直接是对应位置 "F"

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-4-26 21:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
micch 发表于 2019-4-26 21:44
多谢丢丢老师指导,查找到目标值后就向右查找了,不需要减半减半的查了
测试=LOOKUP(9,{1,9,9,9,9,9,9,9,9 ...

当在 2 分位中查到目标 值时,它是向后逐个顺查,直到不是目标值为止。(止时不分大小值)
看起来的 2 分位 也不是纯正的 。哈哈

TA的精华主题

TA的得分主题

发表于 2019-4-26 22:07 | 显示全部楼层
丢丢表格 发表于 2019-4-26 21:50
当在 2 分位中查到目标 值时,它是向后逐个顺查,直到不是目标值为止。(止时不分大小值)
看起来的 2  ...

是啊,不仔细想还不知道,如果根据这个规律,也可以不是从小到大而得到结果。关键就是必须能找到查找值,别一下子错过查找值跑到没查找值的区域。

=LOOKUP(9,{1,9,9,9,9,6,5,4,3,2,1},{"A","B","C","D","E","F","G","H","I","J","K"})
第一次二分,直接排除了左半边,这样就找不到9了。
感觉可以利用中间值是查找值的规律,不去考虑升序而得到正确结果。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-4-26 22:10 | 显示全部楼层
本帖最后由 我走我流 于 2019-4-26 22:36 编辑
丢丢表格 发表于 2019-4-26 21:21
只要看懂下例图表,LOOKUP 就不在话下!
请问: 为什么 C5 的结果 是 9

老师,我个人的理解第一个中位5号的值是3,比4小,所以继续右边中位8号他的值与型号不匹配,重新查找本区间非文本型数值的中位号9,其值是4,由于和查找值相等,按照默认升序的原则,4后的数值只有在等于的情况下才能取值,无论是大或者小都不能取值,所以最后是9       您的例子和我在第12行写的例子是一致的 =LOOKUP(0,0/{-1,0,0,0,2,9,0,8},ROW(1:10)) 结果为6
其实LOOKUP的默认是升序原则,就好理解再找到等于查找值后,其后只要不等于本值就放弃了的道理了

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-4-26 22:43 | 显示全部楼层
我走我流 发表于 2019-4-26 22:10
老师,我个人的理解第一个中位5号的值是3,比4小,所以继续右边中位8号他的值与型号不匹配,重新查找本区 ...

这么一说,我才明白了,感情我一直都误解lookup了,这下又明白了不少

回帖那个表,白折腾半天,结果理解的不对,尴尬的要命,我先删了吧

TA的精华主题

TA的得分主题

发表于 2019-4-26 22:43 | 显示全部楼层
感谢老师平常给我的帮助和指导,由于小花花不够了,只能送老师一朵小花花。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-4-26 22:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
q771021738 发表于 2019-4-26 22:43
感谢老师平常给我的帮助和指导,由于小花花不够了,只能送老师一朵小花花。

谢谢您的回复,俺也没花了,丢丢老师的花还没上上。。您的花,俺明天一起补上,

TA的精华主题

TA的得分主题

发表于 2019-4-27 08:23 | 显示全部楼层
本帖最后由 jivy1212 于 2019-4-27 09:36 编辑
丢丢表格 发表于 2019-4-26 21:21
只要看懂下例图表,LOOKUP 就不在话下!
请问: 为什么 C5 的结果 是 9

第1个二分:INT(1+10)/2=5,即与F2的3对比,3‹4,而默认认为是升序,故执行第2次二分;
第2个二分:INT(6+10)/2=8,即与I2的错误值对比,因会忽略错误值,则会与J2进行对比,4=4,因为相等故第一判断就为记住该位置,然后向后逐个对比后面的数(只有一个3),不满足条件,返回上1次满足条件的位置,即J2对应的位置
我的理解,不知道对不对。。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-4-27 09:19 | 显示全部楼层
Lookup 第二参数包含有 ;中文、字母、数字、逻辑值、错误值 等各种字符时,

其他字符 可否替换为 某个数值,做为 判断大小的 依据 ?
比如 True = 99999, False=88888 ,中文字符=40000--60000,字母=??

TA的精华主题

TA的得分主题

发表于 2019-4-27 09:20 | 显示全部楼层
=LOOKUP(0,0/{-1,0,0,0,2,9,0,1,0,8},ROW(1:10))变为
=LOOKUP(0,{0,#DIV/0!,#DIV/0!,#DIV/0!,0,0,#DIV/0!,0,#DIV/0!,0},ROW(1:10))

昨天想了半天。如果第一次找到的中间值是2对应位置,因为和查找值相同,所以向右找第6个还相同,第七个不同,所以结果是第6个。

但是我理解的是忽略错误值后,直接就是5个0,所以第一次查找对应的是中间的0,也就是9个位置。因为和查找值相同,所以向右查找,9右边对应的不是0,所以结果就是9的位置,第6个

两个解释,结果是相同的。但是不知道函数运行过程,到底是按向量的个数来二分,还是忽略错误值文本值之后的个数来二分。

以丢丢老师C9结果是9为例。如果忽略错误和文本,向量的组合是{1,5,3,9,4,3}第一次查找到中间值是第三个数3,因为小于查找值,所以第二次二分向量是9,4,3} 中间值为4,因为和查找值相等,所以向右查找,右侧3不等于查找值,所以直接就是4对应的位置为结果,对应第三参数位置是9
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-4-16 22:10 , Processed in 0.053013 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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