vlookup是我们最常用的查找函数,但在实际查找过程中,它有时却显得力不从心,如指定位置查找、多条件查找、反向查找等。有一个函数却可以轻易实现,它就是今天的主角:lookup函数
一、查找最后一条符合条件的记录
【例1】查找a产品的最后一次入库单价

=lookup(1,0/(c5:10=b13),d5:d10)
二、多条件查找
【例2】根据时间和产品名称查找
=lookup(1,0/((b25:b30=c33)*(c25:c30=c34)),d25:d30)

三、指定区域最后一个非空值查找
【例3】在第16行查找每个人最后一次还款日期
=lookup(1,0/(b2:b13<>""),$a2:$a13)

四、反向查找
【例4】根据真名查找a列网名
=lookup(1,0(b2:b5=a9),a2:a5)

五、模糊查找之1
【例5】如下图所示,要求根据提供的城市从上表中查找该市名的第2列的值。
=lookup(9^9,find(a7,a2:a4),b2:b4)

六、模糊查找之2
【例6】如下图所示,要求根据地址从上表中查找所在城市的提成。
=lookup(9^9.find(a$3:a$6,a10),b$3:b$6)

可能很多新手对上面的公式不太理解,为什么公式要这样写。其实只需要记住固定的用法就可以了(如果你非要了解就看本文最后部分)。即:
lookup(1,0/((条件1)*(条件2)*..(条件n)),区域或数组)
当然lookup函数的用法远不止以上这些,它是excel函数高手的最爱,如果有人对你说“我函数还可以”,你就问他:你会用lookup吗?
如果你很想很想了解lookup的用法,小编就把原理告诉你,能不能懂就看你的悟性了。
附lookup查找原理:二分法
想了解lookup的查找原理和更深入的使用它,你必须了解今天要学习的二分法原理。
从一个例子说起:
【例】下图中左表和右表只有第5行的会员名子不同,但在第11行查找b对应的消费金额时结果却不同。甚至左表中查找到的是会员a的消费金额。
公式:
b11=lookup(a11,a2:b8)
e11=lookup(d11,d2:e8)

其实,lookup函数很清醒,一点都不傻,只是我们对它了解的太少了!
lookup函数查找是遵循二分法查找原理,所以要看懂上例中的查找结果,必须要了解什么是二分法查找。(二分法是excel中最难理解的函数知识点,建议同学们洗把脸清醒一下再向下看)
一、什么是二分法。
从前向后一个一个的查找,是遍历法。二分法不是这样,它是从二分位处查找,如果查找不到再从下一个二分位处查找,直到查找到和他大小相同或比它小的数。
二、基本原理。
想了解二分法,必须了解下面2个原理。
1、二分位的判定
说白了,二分位就是中间的位置,如果有7个数(lookup函数的第2个参数的总行数),那么第4个数就是中间的位置。
=lookup(a11,a2:b8)

如果有10个数呢,则第5个位置是二分位。这里有一个公式可以计算出来。
=int((总行数+1)/2)
2、查找方向确定
当在二分位查找不到时,接下来该怎么查找呢?
当上一次二分位值大于查找的值时,向上继续查找,在二分位上面区域找出新的二分位,直到找出符合条件的值。如下图中,先从第5行查,因为c>b,所以就向上继续查,上面区域d2:d4区域的二分位值是d3,而d3的值是b,则对应的e列值800是是查找结果。

当数值小于查找的值时,向下继续按二分法查。如下图中,先查找第5行,发现a<b,所以向下继续查,在第2个二分位处发现还是小于b的a,就继续向查,因为a8的d>b,所以a7的a最终符合条件(查找到和目标值相等,或比目标值小的值)

当二分值等于查找的值时,向下逐个查,最后相邻且相等的值即符合条件。
如下图所示,在a5(第1个二分位)查找到了a,本来查找结果应该是b5的860,但由于a6的值也是a,所以查找结果变成了第6行的值。而a8虽然也是a,但和a5不是连续相等区域。所以结果不是b8。

三、lookup示例解析
1、区间查找。
【例1】如下图所示,是典型的区间查找公式。查找350对应的提成比率是7%。

查找过徎:
从第1个二分位处(a4)处开始查找,200<350,向下查找。
在第2个二分位处(a6)的值400>350,所以要向上查,上面只有a5一个值300,且该值小于350,所以b5的值即为最终查找结果。
2、查找最后一个。
【例2】如下图所示,查找顾客a最后一次的消费金额。

分析:
这里肯定不能直接用lookup查找b,否则按二分位查找,结果不一定是最后一个。所以就用0除的方法把符合条件的变成0,不符合条变成错误值:
=0/(a2:a8=a11)
结果是
{0;0;#div/0!;#div/0!;0;#div/0!;#div/0!}
由于lookup会过滤掉错误值,所以在lookup眼中,上面的数组是这样的:
{0;0;0}
然后用1查找最后一个0的位置
=lookup(1,0/(a2:a8=a11),b2:b8)
这里1是任一个大于0的值,因为大于0,所以用二分法查找时,会一直向下查找,直到最后一个0值。
lookup的二分法查找,是跳跃式的查找。它总认为被查找的1组值是从小到大排列,如果遇到小的就向下找更大的,如果遇到大的就向上找更小的。
在excel表格中查找,除了一般的精确查找,其他的都可以承包给万能的lookup函数了。
延伸阅读:
财务和会计是一回事吗?竟然错了这么多年!
总局个税最新口径:年终奖、经营所得、汇算清缴等问题都有了
老板要增加投资?拿出这个方案年终奖翻倍!