admin管理员组

文章数量:1530517

简介

LOOKUP公式用于通过查询值从一个表中查找想要的对应值。例如利用学生的名字从成绩单中查找他对应的分数。

常规用法

LOOKUP(查询值,查询列表,返回列表)

如图所示AB两列为省份和其对应的代码。在E2位置的公式为=LOOKUP(D2,B2:B33,A2:A33),意思是在B列中查找和D2相同的值,如果找到了就返回对应的A列的值。在H2位置的公式为=LOOKUP(G2,A2:A33,B2:B33),意思是在A列中查询G2的值,如果找到了就返回对应的B列的值。

从结果可以看出,这两个查询都失败了,一个返回了错误的结果,一个不返回结果。这是因为Lookup函数的设计十分搞糟,一度导致没人愿意用这个函数,直到有人开发出高级用法。那么这个函数糟糕在哪呢?

在LOOKUP函数中,查询列表必须按从小到大的顺序排列,那有人说这里B列是字符串怎么从小到大,实际上字符串也是有大小的,字符串的大小就是字符在编码表中的编号,从第一个字符开始依次比较,直到比出大小。为什么微软的程序员要做这么糟糕的设计呢?我的理解是为了提高搜索效率,据我猜测,他们应该采用的是二分查找的策略,在二分查找过程中,返回不大于查询值的最后一个被比较大小的值。

二分查找具体可以看下面这篇文章,有一个比较好理解的动态图:

本文标签: 公式常用ExcelLOOKUP