在EXCEL的查找函数中,除了我们都知道的大名鼎鼎的VLOOKUP函数外,还有一个非常重要的函数–LOOKUP函数。它应用广泛,灵活性强,可以说是“三千宠爱在一身”。下面我们就来总结一下这个函数的一些主要用法。
01
查找数值
下例中,要依据商品编号来查询单价和运费。
思路:
依据LOOKUP函数向量形式的要求,确保查找参数处于升序状态
LOOKUP函数按查找到的位置找出第二个区域中相同位置的值
02
提取文本中的数值
下例中,需要将数字从文本中提取出来。除了LOOKUP函数之外,我们还可以使用SUBSTITUTE函数或者EXCEL自带的分列功能。
在单元格C2中输入
“=-LOOKUP(1,-LEFT(A2,COLUMN(A:X)))”,回车后得到数值。
在单元格B2中输入
“=RIGHT(A2,LEN(A2)-LEN(C2))”,回车后得到文本。
思路:
用COLUMN(A:X)来产生一个新的数组{1,2,3…24}
用left函数,分别提取出“1,16,168…”,并形成一个新的数组
加负号使数字类型的数据变成负数
使用lookup函数在数组中查找“1”
查找不到“1”,因此返回数组中最后一个数字型数据“-168318”
最后负负得正
03
提取最右侧的文本
一般而言,一行中最右侧的数据往往都是最新的数据。很多时候都需要提取最新的数据,如下列:
在单元格A5中输入
“=LOOKUP(1,0/($A$2:$C$2>””),$A$2:$C$2)”并回车。
思路:
首先判断单元格区域A2:C2中是否为空,产生一个新的数组后,在用“0”去除这个数组,又得到一个新的数组{0,0,0}
使用lookup函数查找“1”,差找不到则返回A2:C2中最后一个数据
04
提取最右侧的数值
同上例,需提取最右侧数值。
在单元格A5中输入
“=LOOKUP(9E+307,A2:C2)”
思路:9E+307是Excel世界中的最大值。当函数查找不到查找值时,就返回区域中最右侧的数据。
注意:当一行区域内即有文本也有数值时,如果想提前最后一位数据,可以将公式书写为:“=LOOKUP(1,0/(A:A>””),A:A)”,即提取文本的那个公式。
05
逆向查找
当由于某种原因不能改变表格结构是,就可以使用此方法来查找数据了。
在单元格E2中输入
“=LOOKUP(1,0/($B$2:$B$4=D2),$A$2:$A$4)”
思路:这个和前面提取最右侧文本的那个用法类似。它们有一个通用的公式:LOOKUP(1,0/(条件),目标区域或数组)
注意:如果是多条件查询,那么公式可以写成下面的样子:
=LOOKUP(1,0/((条件1)*(条件2)*(条件3)),目标区域或数组)
这个就是LOOKUP函数查找的经典公式。
06
多区间条件判断
在单元格G2中输入
“=LOOKUP(B2,{0,59,79,95;”不及格”,”良”,”优良”,”优秀”})”回车并下拉即可。
07
根据简称查询全称
在单元格B2中输入
“=IFERROR(LOOKUP(1,0/FIND(A2,$D$2:$D$6),$D$2:$D$6),””)”并下拉即可。
思路:
用FIND函数查找A2中的简称在客户清单中的位置
“0/FIND”返回了一个数组{0;#VALUE!;#VALUE!;#VALUE!;#VALUE!}
LOOKUP函数返回查找到的全称
IFERROR屏蔽查询不到后返回的错误值
08
合并单元格的查找
下例中,我们将通过姓名来查询部门。
在单元格E2中输入
“=LOOKUP(“座”,INDIRECT(“A2:A”&(MATCH(D2,$B$2:$B$9,0)+1)))”并下拉即可。
思路:
MATCH函数用来返回查找员工的姓名在姓名列中的位置
INDIRECT函数返回一个动态的单元格区域,范围是从单元格A2到和姓名单元格所对应的单元格
LOOKUP查找得到部门。汉子“座”是汉字中ANSI代码比较大的字符,确保了可以查找到单元格区域中最后一个数值
大家要多多动手操作,才能更快地掌握这些技巧!