ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 关于罗版的 Lookup高级应用 案例的困惑

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2011-12-25 09:00 | 显示全部楼层 |阅读模式
本帖已被收录到知识树中,索引项:LOOKUP
近来拜读坛子里各位前辈无私奉献出的各种应用案例,委实受益良多。
昨天在学习罗版的 Lookup高级应用 时,有一处颇为不解,还请各位老师赐教:

因为比较直观,我就直接上图了,——这是在数字与文本混输中提取数字的技巧

lookup技巧

lookup技巧

我的困惑是:
公式算到倒数第二步时,理应是这样的:-lookup(,{-1;-12;-128;#VALUE!;#VALUE!;#VALUE!})
然后接下来lookup函数查找0值,因为都是负数,肯定找不到,那么就取小于0的最大值,
——所以我的困惑就出来了,小于0的最大值理应是-1才对,为什么函数取的是-128?

点评

知识树索引内容位于14楼  发表于 2014-3-13 14:19

TA的精华主题

TA的得分主题

发表于 2011-12-25 10:44 | 显示全部楼层
月关 发表于 2011-12-25 10:06
不对不对,还是有问题!
即使left()提取的都是文本,那么一得负之后自动变成数值,真正的文本就变成了#VAL ...

我觉得你理解不对吧。如果你A列有负数,这个公式就不能用。如果是单纯从公式理解,首先他必须是升序,然后从左向右查找,记住这里是文本,所以找见的是最大的那个,只查询到这一个数值,才转化的 负 数。我是这样理解的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-12-25 10:16 | 显示全部楼层
回复: zhc19620430

老师请看您自己举的例子, “ 得到{-1;-12;-12;-12.3;-12.33;#VALUE!} ”
那么把它套入公式中: -lookup(0,{-1;-12;-12;-12.3;-12.33;#VALUE!})
——我困惑的正是这一步,请问老师,接下来应该得到什么答案?
lookup是取 -1还是-12?
按照微软的说明,小于0的最大值是不是应该是-1?但是实际取值时为什么取出来的会是-12.33?

另 回复 9#
http://excelbbx.net/Excel/index.htm


TA的精华主题

TA的得分主题

 楼主| 发表于 2011-12-25 10:06 | 显示全部楼层
本帖最后由 月关 于 2011-12-25 10:08 编辑

不对不对,还是有问题!
即使left()提取的都是文本,那么一得负之后自动变成数值,真正的文本就变成了#VALUE!
既是这样,我1楼的问题依然如故:小于0的最大值理应是-1才对

难不成真像我在5楼玩笑中说的那样?

——各位老师,我知道有些参数可以省略,我也知道在具体案例中的取值,我上面只是举个例子而已。我关注的重点不是那里,这些都不是让我困惑的地方

TA的精华主题

TA的得分主题

发表于 2011-12-25 10:04 | 显示全部楼层
月关 发表于 2011-12-25 09:59
感谢老师一语点醒梦中人!
您说的这些我都理解,关键是这一句我忽略了,—— LEFT()提取的都是"文本"... ...

罗版的 Lookup高级应用 的帖子,能不能给个链接学习下,谢谢!

TA的精华主题

TA的得分主题

发表于 2011-12-25 09:28 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2011-12-25 09:29 | 显示全部楼层
lookup属于二分法查找,第一参数用一个比第二参数都大的值,查找第二个参数最后一个满足条件的值
也就是说,用零去查找最后一个负数的值,找到后公式前面加个负号,把得出来的-128转为-(-128)从而得到128!

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-12-25 09:49 | 显示全部楼层
刚才在帮助中同时发现这么一句:

[ 要点 ]  lookup_vector 中的值必须按升序排列:..., -2, -1, 0, 1, 2, ..., A-Z, FALSE, TRUE;否则,LOOKUP 可能无法返回正确的值。文本不区分大小写。

很显然,罗版的公式中,是没有按升序排列的
那是不是可以这么理解,从理论上来讲,这样的用法是不允许的,因为你不按规矩出牌,
而微软对于不按规矩出牌行为,采取的措施就是将错就错,敷衍,
如此,阴错阳差,反而却得出了我们想要的结果 {:soso_e113:}

开个玩笑,坐等老师解释

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-12-25 09:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
hopeson2010 发表于 2011-12-25 09:29
lookup属于二分法查找,第一参数用一个比第二参数都大的值,查找第二个参数最后一个满足条件的值
也就是说 ...

感谢老师回复!
“查找第二个参数最后一个满足条件的值”,——这一句老师可有根据?

微软Excel帮助中是这么讲的:

语法
LOOKUP(lookup_value,  lookup_vector,  [result_vector])
LOOKUP 函数向量形式语法具有以下参数:
lookup_value    必需。LOOKUP 在第一个向量中搜索的值。Lookup_value 可以是数字、文本、逻辑值、名称或对值的引用。
lookup_vector    必需。只包含一行或一列的区域。lookup_vector 中的值可以是文本、数字或逻辑值。

说明
如果 LOOKUP 函数找不到 lookup_value,则该函数会与 lookup_vector 中小于或等于 lookup_value 的最大值进行匹配。
如果 lookup_value 小于 lookup_vector 中的最小值,则 LOOKUP 会返回 #N/A 错误值。


TA的精华主题

TA的得分主题

发表于 2011-12-25 09:51 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
这个首先要看 row($1:6),它获取的是一组数组{1,2,3,4,5,6},如果A列数据是10位,如:1234567890,那这个数就要更大,row($1:10)才可以。
LEFT(A1,ROW($1:6)获取的数字是文本数组,lookup查询的来的数据是错的,前面必须加“-”。得到{-1;-12;-12;-12.3;-12.33;#VALUE!},有关lookup讲解网上有,只是第一参数可以省略,也可以填写0、1... ...你可以查询。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

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

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

GMT+8, 2024-4-26 21:58 , Processed in 0.050927 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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