带单位的数字,单位长度不一,如何提取数字,LOOKUP应用实例

👍

近期推送的文章

偷懒的技术系列图书,
五折优惠,最后一天(3月7日24时结束)

·  正  ·  文  ·  来  ·  啦  ·

引言
本文是2016年3月的旧文,发表在新浪博客,现转到公众号上来
ExcelHome论坛微信公众号发了篇文章
《关于LOOKUP,我有话对你说》
其中有一个公式,如下图
《“偷懒”的技术》读友群有读者提出不明白这个公式,下面详细解释一下此公式。
为了便于行文,将公式改成:
  • =-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查找规则的朋友,请阅读:

(0)

相关推荐