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

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函数的查找原理