如题所述
Lookup函数是最牛的Excel查找函数,特别是lookup(1,0/)模式横扫无数查找难题,比如反向查找、多条件查找、查找最后一个等。但,绝大多数用户只会套用,却不懂其中的原理。
搜遍百度,也没有找到一个能明白的教程,所以必须要写一个详细的教程了。
首先,先看一下lookup函数的一个查找特性:
给一个足够大的数(比范围内所有数都大),必定返回最后一个值。(原理是二分法查找,这里不再细 )
无论你添加什么类型数值,只要小于给定的值,都会返回最后一个
如果有错误值,直接忽略
这个忽略错误值的特征非常重要,因为当根据条件查找时,只需要把不符合条件的全变成错误值,就可以用lookup查找后最后符合条件的。
不符合条件的怎么变成错误值?任意数字除0就会变成错误值 #Div/0!,下面举一个例子。
【例】如下图所示,要求根据姓名查找对应的工资
E2公式:
=LOOKUP(1,0/(A2:A8=D2),B2:B8)
A2:A8=D2 是用A列的姓名和D2的姓名进行逐一对比,结果只有两个:相同返回True,不同返回False。按F9键可以查看。
在四则运算时,True相当于数字1,False相当于数字0,所以不符合条件的值变成了错误值,符合条件变成了0。
根据lookup忽略错误值、用足够大的数查找最后一个数字的原理,就可以准时查找到符合符件的值。
=LOOKUP(1,{#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;0;#DIV/0!;#DIV/0!},B2:B8)
公式中为什么用1和0,其他数字可以吗?当然可以,只要第一个数字大于第二个数字。
如:
=LOOKUP(9999999,9999998/(A2:A8=D2),B2:B8)
用1和0只是看着简便而已,现在明白了吧。
所以利用这个原理,多列判断也可以实现,只是添加对比条件而已。
=LOOKUP(5,3/((A2:A7=E2)*(B2:B7=F2)),C2:C7)
说:每次分享lookup函数公式,总会有人提问1,0的含义。现在你明白了吗?你身边肯定有99%的同事不理解,就帮把本文分享出去吧。