Vlookup函数的最后一个参数是用于选择近似匹配和精确匹配。精确匹配时False也就是0,近似匹配时True,也就是1,可省略。他们最主要的区别就是近似匹配用的是二分查找法,而精确匹配是逐行比较。所以当我们用近似匹配时,选取匹配的(即第二个参数的数据)数据一定要升序排列,如果不能升序排列,那么就使用精确匹配。
二分查找
二分法查找是把查找范围中的数据按照个数一分为二找到位于中间位置的一个数据,中间值,然后用我们的查找值和中间值做比较。当中间值等于查找值时,直接去获取结果;当中间值小于查找值时,则向下继续进行二分法查找比较(也就是在不含中间值在内的下方的那一半数据中继续进行二分法查找);当中间值大于查找值时,则向上继续进行二分法查找比较(也就是在不含中间值在内的上方的那一半数据中继续进行二分法查找)。如果如此二分到最后一个数据都未找到等于查找值的数据:最后一个数据小于查找值的,那就以最后一个数据的位置去获取结果值;最后一个数据大于查找值的,那就再向上找一个位置最靠近最后一个数据的小于或等于查找值的数据,再以这个数据的位置去获取结果。
此时没有升序排列时,公式使用错误。过程是这样的:
第一次查找:中间值(第4个数据)是7,查找值2小于7,因此向上在A2~A4中找;
第二次查找:上面的4个数据,中间值(第2个数据)是5,查找值2小于5,继续向上找,也就是A2~A3;
第三次查找:只有一个数据A2也就是4,因此以4为参考,向上找一个位置最靠近4,同时数值小于2或者等于2的数据,但是因为没有满足的数据所以显示公式错误;