在日常工作中,我们都会遇到在数据表中查询数据的需求,Excel中对数据查询给出了很多的方式,其中速度最快的查询当属LOOKUP函数,下面就让小编带你深入了解LOOKUP函数。
LOOKUP函数的语法如下:
LOOKUP(lookup_value,lookup_vector,result_vector)
LOOKUP(lookup_value,array)
LOOKUP函数以高效的运算速度被EXCEL函数爱好者喜欢,而且LOOKUP在日常实际工作中特别是数组公式,内存数组中应用广泛。
LOOKUP(lookup_value,lookup_vector,result_vector)
lookup_value意思为我们要在数据表中查找的“值”。
lookup_vector意思为我们要查找的值得“数据表”。
result_vector意思为我们通过数据表想要得到的"值“。
LOOKUP的查询方式为二分法查询,具体的查询原理看下图。
下面我们用例子给大家具体讲一下LOOKUP的具体应用与原理:
我们以一个学生成绩表为例进行分析,查询一下英语成绩为98的学生姓名:
F2的公式为=LOOKUP(D2,B2:B15,C2:C15)
意思为从B2:B15列里面找D2,并返回C2:C15相对应行的值
这里的结果是"刘备"肯定会让好多人感到困惑,明明有98对应的是“王思”怎么会返回“刘备”呢?那么看往下看,大家就会彻底明白的。
我们对LOOKUP的查找方法进行分解——第一次二分法查询:
98会跟第7行的数据78进行比较,因为98>78,所以返回第8到第14行的值。
第二次二分法查询:
98会跟第4行的数据66进行比较,因为98>66,所以返回第5到第7行数据。
第三次二分法查询:
98会跟第2行的数据87进行比较,因为98>87所以返回第3数据。
因为98比91大,所以就向下近似取比98小的最近的值——91所对应的名字
这里就给我们总结了一个知识点:
1、LOOKUP要查询一个明确的值或者范围的时候(也就是知道在查找的数据列是肯定包含被查找的值),查询列必须按照升序排列。(在EXCEL帮助文档里也是这么说的)
如果所查询值为明确的值,则返回值对应的结果行,如果没有明确的值,则向下取的于所查询值最近的值
2、查找一个不确定的值,如查找一列数据的最后一个数值,在这种情况下,并不需呀升序排列。(下面有例子特别说明)
我们以例子1来帮助大家理解(没有明确的值,但是存在包含关系)
一个公司的销售提成表如下:
我们求取销售额在40W所得提成:
这因为40W介于10W与50W之间,所以取比40W小的,最接近的值10W所对应的提成比例。
我们以例子2来帮助大家理解(有明确的值)
如下图,找成绩为英语98的人的姓名:
LOOKUP(lookup_value,array)的意思为,从array(数组)里的第一列查找”lookup_value“的值,并返回array里最后一列的结果。
我们依旧以例子来解释
我们一个班级的学生成绩单:
我们查找“李刚”的总成绩:
公式为: LOOKUP(G5,B2:F11)
从B列中查找G5的值,找到后,返回F列对应的行的值。
这里如果查询表中,最后一个人的工资。我们想想该怎么写?
G2的公式为: LOOKUP(9E+307,d:d)
9E+307是Excel中的最大数值
G3的公式为: LOOKUP(65535,CODE(C:C),D:D)
65535是Excel中汉字代码的最大代码
lookup对数据的要求为升序排列,所以要先对数据表进行升序排列。