加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

公式-LOOKUP(1,-LEFT(A1,ROW($1:$10)))详解

(2016-03-14 22:08:41)

ExcelHome论坛微信公众号今天发了篇文章《关于LOOKUP,我有话对你说》,其中有一个公式

如下图

http://s16/mw690/001r2ALAgy7079eNP8Xef&690

《“偷懒”的技术》读友群有读者提出不明白这个公式,下面详细解释一下此公式。

为了便于行文,将公式改成:

  • =-LOOKUP(1,-LEFT(A1,ROW($1:$10)))

一、公式组成ROW($1:$10)解释
生成{1;2;3;4;5;6;7;8;9;10}常量数组

 

二、公式组成LEFT(A1,ROW($1:$10))解释
分别取A1单元格的左边1个,2个,3个……9个、10个,结果如下
{"2";"22";"22.";"22.5";"22.5K";"22.5KG";"22.5KG";"22.5KG";"22.5KG"}

 

三、公式组成-LEFT(A1,ROW($1:$10))解释:
步骤二取出的是文本,加负号就是对其进行减法运算,从而将其转化为文本,
对字母或汉字的进行加减会出错,结果如下
{-2;-22;-22;-22.5;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}

 

四、公式组成LOOKUP(1,-LEFT(A1,ROW($1:$10)))解释:
Lookup有三大特点:
特点1:按二分法查找
特点2:忽略错误值,
特点3:要求数据按升序排列,如果没有按升序排列,也会很傻很天真的以为别人已按要求对数据进行排序。
因而,LOOKUP总是傻乎乎地认为后边的数字会比前边的大,
所以

  • =LOOKUP(1,{-2;-22;-22;-22.5;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!})

等同于

  • =-LOOKUP(1,{-2;-22;-22;-22.5})

所以:在{-2;-22;-22;-22.5}中,查找1肯定是找不到的
根据二分法原理,先拿1与第一个-22对比,-22比1小,LOOKUP认为右边的数会更大点,就在右边按二分法查找,再拿第二个-22与1相比,-22比1小,LOOKUP认为右边的数会大点,最终拿-22.5与1相比,还是比1小,此时LOOKUP已查找完所有“按规则应该查找的位置”,还是没找到等于1的值,就返回所有查找值中“最大”的值,也就是“最接近”1的值(实际上不是最大值,只是按升序排列的规则,最后一个应该是最大的)
注意:

根据查找规则,这里返回的是最后一个值,比如

=LOOKUP(1,{-22.5;-22;-22;-2})会返回结果-2

=LOOKUP(1,{-1;0;-22;-33})会返回结果-33
"不太明白LOOKUP查找规则的请阅读

《深入理解LOOKUP:LOOKUP函数的查找原理

http://blog.sina.com.cn/s/blog_4e6c2b960102w59a.html"

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有