天气

Lookup查找函数(二分法)


 【例】下图中左表和右表只有第5行的会员名子不同,但在第11行查找B对应的消费金额时结果却不同。甚至左表中查找到的是会员A的消费金额。

公式:

B11 =LOOKUP(A11,A2:B8)

E11 =LOOKUP(D11,D2:E8)

 

其实,lookup函数很清醒,一点都不傻,只是我们对它了解的太少了!

 

lookup函数查找是遵循二分法查找原理,所以要看懂上例中的查找结果,必须要了解什么是二分法查找。

 

 

 

一、什么是二分法。

 

从前向后一个一个的查找,是遍历法。二分法不是这样,它是从二分位处查找,如果查找不到再从下一个二分位处查找,直到查找到和他大小相同或比它小的数。

 

二、基本原理。

 

想了解二分法,必须了解下面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值。

原文来自:http://mp.weixin.qq.com/s?__biz=MjM5NDYyNzAzNQ==&mid=213714188&idx=1&sn=b7a76d81f3310e4df6d20d9107098a1b#rd


 

标签:excel
分类:Excel学习| 发布:admin| 查看: | 发表时间:2015/6/30
原创文章如转载,请注明:转载自个人资讯网 http://www.zhangxinran.com/
本文链接:http://www.zhangxinran.com/post/1424.html

相关文章

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Design By zhangxinran.com | Login | Power By zhangxinran.com | 皖公网安备:34010402701072号