Lookup函数是典型的查找引用函数,今天,小编带大家进一步了解Lookup函数的典型用法。
一、Lookup函数功能及语法结构。
功能:从单行或单列或数组中查找符合条件的值。
语法结构:从功能中可以看出,语法结构对应的有2种,一种是从单行单列中查询,另一种是从数组中查询,所以对应的语法结构也有2种。
1、向量形式:=Lookup(查找值,查找值数据范围,[返回值范围])。
解读:当“查找值”和“返回值”的数据范围相同时,可以省略[返回值范围]。
2、数组形式:=Lookup(查找值,数据范围)。
解读:此处的“数据范围”必须同时包含“查找值”和“返回值”的数据范围,而且“查找值”必须是“数据范围”的第1列,“返回值”必须是“数据范围”的最后1列。
目的:根据员工的姓名查询对应的“月薪”。
方法1:
在目标单元格中输入公式:=LOOKUP(J3,$B$3:$B$12,$G$3:$G$12)。
解读:
此方法是向量形式。
方法2:
在目标单元格中输入公式:=LOOKUP(J3,$B$3:$G$12)。
解读:
此方法为数组形式,查询值“J3”的值在B列,即数据范围的首列,返回值在G列,即数据范围的最后1列。
二、Lookup函数的“缺陷”及解决技巧。
细心的亲应该已经发现,使用上述的方法在查询引用时,部分查询结果不正确,例如查询“袁术”的“月薪”时,返回值为“3762”,但实际月薪为:2722;Why????究其原因是Lookup函数的特点决定的,在使用Lookup函数查询引用时,必须以“查询值”所在的列为“主要关键字”升序排序,以“查询值”所在的列为“主要关键字”升序排序,以“查询值”所在的列为“主要关键字”升序排序,即“先排序,后查询”。
目的:根据员工的姓名查询对应的“月薪”。
方法:
在目标单元格中输入公式:=LOOKUP(J3,B$3:B$12,G$3:G$12)或=LOOKUP(J4,B$3:G$12)。
解读:
使用排序的方法虽然可以达到预期的效果,但毕竟多了一个操作,也不是特别方便,如果不想排序,就可以使用“变异”的向量形式。
原理:当Lookup函数找不到对应的查询值时,则“自动向下”匹配,即查询小于或等于当前值的最大值,
目的:根据员工的姓名查询对应的“月薪”。
方法:
在目标单元格中输入公式:=LOOKUP(1,0/($J$3=$B$3:$B$12),$G$3:$G$12)。
解读:
1、不用提前升序排序。
2、从上述的公式中不难发现,“变异”查询的本质还是向量形式,查询值为1,查询范围为:0/($J$3=$B$3:$B$12),返回值范围为:$G$3:$G$12。当J3单元格的值等于B3:B12范围中的值时,返回1,0/1返回0;而不等于是,返回0,0/0返回错误值,所以查询值范围是由一个0和多个错误值构成的数组,根据Lookup函数的向下匹配原则,则返回查询值中等0对应的返回值。
三、应用案例。
1、多条件查询。
目的:根据员工的姓名和学历查询对应的“月薪”。
方法:
在目标单元格中输入公式:=LOOKUP(1,0/((J$3=B$3:B$12)*(K$3=F$3:F$12)),G$3:G$12)。
解读:
多条件查询的原理可以参阅“变异”查询的原理,1*1=1、0*1=0、0*0=0;即只有当多个条件同时成立时,总条件才成立。
2、逆向查询。
目的:通过员工姓名查询对应的工号。
方法:
在目标单元格中输入公式:=LOOKUP(1,0/(K$3=C$3:C$12),B$3:B$12)。
解读:
多条件的逆向查询原理相同哦!
3、区间(等级)查询。
目的:根据等级划分数据返回“月薪”对应的等级。
方法:
在目标单元格中输入公式:=LOOKUP(H3,K$3:K$6,L$3:L$6)。
解读:
区间查询的原理其实就是向下查询,返回对应的值。
4、填充合并单元格。
目的:快速填充“学历”列的合并单元格。
方法:
在目标单元格中输入公式:=LOOKUP("一",G$3:G3)。
5、返回指定列最后一个非空单元格的值。
方法:
在目标单元格中输入公式:=LOOKUP(1,0/(G$3:G$12<>""),G$3:G$12)。