宝哥软件园

要完全理解Lookup函数 必须理解二分法

编辑:宝哥软件园 来源:互联网 时间:2021-09-17

当你理解了查找的原理,你就可以更好地使用它。二分法原理,共同学习。

从一个例子开始:

[示例]在下图中,只有两个表的第五行中的成员名称不同。搜索b的消费金额时,显示结果不同,而a的消费金额直接出现在左侧。

公式显示:

B11=LOOKUP(A11,A2:B8)

E11=LOOKUP(D11,D2:E8)

当你理解了二分法,你就能理解为什么会出现上面的结果。

1.什么是二分法?

依次一个一个搜索是遍历的方法。二分法与之不同。顾名思义,它从二进制位置开始搜索,如果找不到,就从下一个二进制位置开始搜索,直到找到一个与它大小相同或更小的数字。

二、基本原则。

有两个原则。

1.二元位置的判断。

当总数为奇数时,二进制数字容易判断,中间数字就足够了。如果有7个数字(即函数的第二个参数),那么第4个数字就是中间的数字。

=LOOKUP(A11,A2:B8)

如果有12个数字,那么第六位是二进制的。有一个公式可以计算。

=INT((总行数1)/2)

2.确定搜索方向。

在二进制位置找不到接下来该怎么办?

如果最后一个二进制值大于搜索到的值,向上搜索并找出新的二进制值,直到找到相应的值。下图。

同样,如果该值小于搜索值,则继续向下搜索。

如果二进制值等于搜索到的值,则逐个向下检查,直到相邻且相等的值满足条件。

三.查找示例分析。

1.区间搜索。

【例1】下图是常用的区间搜索公式。350对应的佣金率是7%。

通过显示屏:

第一步:从第一个二进制位置(对应A4)开始,然后往下看200350。

第二步:如果第二个二进制位置(对应A6)的值是400350,查一下,只有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的位置。

=查找(1,0/(A2:A8=A11),B2:B8)

1是大于0的任何值。因为大于0,所以在二分法搜索时,总是向下搜索到最后一个值0。

Lookup的二分法搜索是跳转搜索。它总是认为要搜索的一组值是从小到大排列的。遇到小的就往下找大的,遇到大的就往上找小的。

更多资讯
游戏推荐
更多+