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的得分主题

 楼主| 发表于 2005-9-21 00:45 | 显示全部楼层
本帖已被收录到知识树中,索引项:LOOKUP

这就需要问微软了.

TA的精华主题

TA的得分主题

发表于 2005-9-21 01:34 | 显示全部楼层

正常情况应该都好理解,但如下面这个公式就不好解释了: 其中A列是不连续文本型数据,B1公式: =MATCH("*",A:A,-1) 公式结果返回什么???结果返回最后一个文本数据的位置。

[此贴子已经被作者于2005-9-21 12:49:11编辑过]

TA的精华主题

TA的得分主题

发表于 2005-9-21 08:11 | 显示全部楼层
以下是引用gdliyy在2005-9-21 1:34:26的发言:

正常情况应该都好理解,但如下面这个公式就不好解释了: 其中A列是不连续文本型数据,B1公式: =MATCH("*",A:A,-1) 公式结果返回什么???结果返回最后一个文本数据的位置。

我的理解:这时返回最后一个文本值位置是对的。

首先 * 表明查找对象是文本类型的;其次,“*”是文本值中最小的,而A列中所有值都比它大,所以按顺序查找,它就返回最后一个文本值的位置。

TA的精华主题

TA的得分主题

发表于 2005-9-21 12:46 | 显示全部楼层
以下是引用czzqb在2005-9-21 8:11:36的发言: >

我的理解:这时返回最后一个文本值位置是对的。

首先 * 表明查找对象是文本类型的;其次,“*”是文本值中最小的,而A列中所有值都比它大,所以按顺序查找,它就返回最后一个文本值的位置。

谢谢你的回复,但“*”怎么可能是文本中最小的呢?这点不对,通过再次验证,原来我把这个公式中的“*”看成是通配符,确实是错误的。 但当在Match(-1)的情况下,如果查找条件用“*”,只要遇到特殊的字符(如-\()),结果就会乱,还是不知到底是用什么法则来查找的。 因此在乱序的情况下,返回最后一个文本的公式应该可以修改为:=Match(Char(1),A:A,-1)

TA的精华主题

TA的得分主题

发表于 2005-9-21 13:28 | 显示全部楼层

我一直把 * ?之类的通配符当作字符来理解,我不知道这个概念对不对。

我来举个例证:用通配符来进行查找,比如查找包含3的值,要写成MATCH("*"&3&"*",A:A……这里两个&的使用实际上已经把查找的类型变成了文本型,而且,更重要的是上面这个公式只能(!)查找到文本型的包含3的值,要想用通配符来查找数值型的包含3的数,好像没什么办法吧

实际上,在公式=MATCH("*",A:A,-1)中, * 号是个字符,即CHAR(42),而版主在上面说的 -\)之类是<42的CHAR

把一个比查找值要小的值排在要查找区域的第一位(!),又用MATCH(,,-1)去查找就会#N/A,onkey的流程图早已注意到了这一点(排在其他位置却不会这样)。例如:MATCH("D",{A,B,C,D},-1)=#N/A, MATCH("E",{E,B,C,D},-1)=1

版主说的用=Match(Char(1),A:A,-1)查找最后一个文本的公式和上述原理正好相符。

TA的精华主题

TA的得分主题

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

补充一点:前面帖子说到 “ *  是文本值中最小的”,确实不对。最小的,是版主说的CHAR(1)

QUOTE:

补充:个人认为char(1)也并非最小的文本,比如""空文本就比它小。当然,关于""是否为文本、是否能称为“空文本”或者“字符长度为0的文本”,或许也是一个讨论的议题。                       ——题外话。   gouweicao78注

[此贴子已经被gouweicao78于2007-5-12 1:00:41编辑过]

TA的精华主题

TA的得分主题

发表于 2005-11-17 13:04 | 显示全部楼层
V的是根据列的东西来找,H是根据行的东西来找!一般直接用LOOKUP的比较少!

TA的精华主题

TA的得分主题

发表于 2005-11-19 10:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
小菜甚是PF!

TA的精华主题

TA的得分主题

发表于 2006-3-12 17:25 | 显示全部楼层
pf看来.lookup查询数只要大于被查询组的中间数就可以了.

TA的精华主题

TA的得分主题

发表于 2006-4-9 21:06 | 显示全部楼层

Lookup二分法之茅台瓶碎》——Onkey流程图修正篇

瓶子碎了

公式=LOOKUP(11,{21,11,44,97,5,1,65,24,65,65,41,45,62,78;1,2,3,4,5,6,7,8,9,10,11,12,13,14})
第一行21,11,44,97,5,1,65,24,65,65,41,45,62,78——数据
第二行1,2,3,4,5,6,7,8,9,10,11,12,13,14——用于标识查找返回答案的位置
根据8楼流程图:
left=1,right=14 →posi=7 →Aposi=65
Xleft →posi<>1 →返回A(posi-1) →返回A6=1
而实际上返回的却是#N/A错误,能否解释呢?
见附件:
7mLCgY2w.rar (2.19 KB, 下载次数: 1634)

[此贴子已经被作者于2007-5-12 1:27:41编辑过]
PUdbqFCp.jpg
gpu1hEQk.jpg
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

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

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

GMT+8, 2024-4-23 23:06 , Processed in 0.046500 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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