Lookup函数作为Excel表格中最强大的查询函数,每一个高阶用法都另会让你感叹原来Lookup函数还可以这么用,今天就让我们一起盘点一下Lookup函数有哪些高阶用法。
一.Lookup函数的很多高阶用法的原理都是基于以下的三个特性,所以这三个特性非常重要!!!
1.Lookup函数在查找时会忽略错误值。
2.当查找区域存在重复数据时,查找的结果为最后一次出现的位置。
3.如果函数LOOKUP找不到查找值,则返回查找区域中小于查找值的最大数值。如果查找值小于查找区域中的最小值,函数LOOKUP返回错误值#N/A。
二.话不多说,直接上干货:
1.正向查询:
(1)操作方法:
在F2单元格输入下方的公式,回车确定就可以快速搞定。
=LOOKUP(1,0/(A2:A10=E2),B2:B10)
(2)解析:
①A2:A10区域为查询区域,判断查找区域每一个单元格的内容是否等于查找值;相等返回逻辑值True,否则返回False。在用0除以逻辑值构成的数组,如果之前的数组中的元素为True则返回数字0,否则返回错误值#DIV/0!。最终构造一个由数字0和错误值#DIV/0!组成的数组,作为Lookup函数的查询区域。
②利用Lookup函数忽略错误值和查找不到查找值返回最接近并且小于查找值结果的特性就可以实现查询区域不是升序的查询。
2.反向查询:
(1)操作方法:
在F2单元格输入下方的公式,回车确定就可以快速搞定。
=LOOKUP(1,0/(B2:B10=E2),A2:A10)
(2)解析:
①Lookup函数查询其实没有正向和反向查询之分都可以套用下方的公式。
=lookup(1,0/(查找值=查找列),结果列)
②其他解释参考正向查询的解释。
3.多条件查询:
(1)操作方法:
在G2单元格输入下方的公式,回车确定就可以快速搞定。
=LOOKUP(1,0/(A2:A10=E2)*(B2:B10=F2),C2:C10)
(2)解析:
①多条件查找与正向查找原理相同,只是需要同时满足A2:A10单元格中的内容等E2单元格的内容和B2:B10单元格中的内容等于F2单元格中的内容返回数字0,否则返回错误值#DIV/0!。
②其他解释参考正向查询的解释。
4.根据数据区间快速判断等级:
(1)操作方法:
①在G列制作一个辅助列在对应的单元格输入每个区间对应的最低分,注意要升序排列。
②在C2单元格输入下方的公式,并向下填充就可以快速搞定。
=LOOKUP(B2,$G$2:$G$4,$F$2:$F$4)
(2)解析:
主要用到lookup的找不到lookup_value,则查找array和 lookup_vector中小于lookup_value的最大数值的特性。
5.查询最后一条记录:
(1)操作方法:
在F2单元格输入下方的公式一,在G2单元格输入下方的公式二回车确定就可以快速搞定。
公式一:=LOOKUP(1,0/(A2:A10=E2),B2:B10)
公式二:=LOOKUP(1,0/(A2:A10=E2),C2:C10)
(2)解析:查询最后一条记录与普通的查询没有什么区别,主要用到了Lookup函数查询时当存在重复数据时,查找的结果为重复数据最后一次出现的位置所对应的数据的特性。
6.查找一列中不同数据类型最后一次出现的位置:
(1)查找A列最后一个文本型数据:
①在单元格中输入下方的公式就可以快速搞定:
=LOOKUP("々",A:A)
“々”可以按住键盘上的Alt键,然后按下41385键就可以快速录入;也可以用“座”这个文字来代替公式中的“々”。
②“々”是编码最大的字符,也就当文本升序排列时会排在最后。
③利用LOOKUP找不到lookup_value,则查找array和 lookup_vector中小于lookup_value的最大数值的特性就可以查找A列的最后一个文本型数据
LOOKUP("座",A:A)
(2)查找A列最后一个数值型数据:
①在单元格中输入下方的公式就可以快速搞定:
=LOOKUP(9E 307,A:A)
②9E 307是Excel中最大的数字,利用LOOKUP找不到lookup_value,则查找array和 lookup_vector中小于lookup_value的最大数值的特性就可以查找A列的最后一个数值型数据。
(3)查找A列最后一个非空单元格中的内容:
①在单元格中输入下方的公式就可以快速搞定:
=LOOKUP(1,0/(A:A<>""),A:A)
②利用Lookup函数当存在重复数据时,查找的结果为重复数据最后一次出现的位置所对应的数据的特性就可以查询到A列最后一个非空单元格的内容;其他解析参考正向查询。
7.合并单元格查询:
(1)在F2单元格输入下方公式,回车确定就可以快速搞定。
=LOOKUP("々",INDIRECT("A2:A"&MATCH(E2,B2:B10,0)))
(2)解析:
①合并的单元格中只有最左上角的单元格的内容为实际显示的内容;例如图中A2:A4单元格合并,只有A2单元格内容为“销售部”,A3和A4单元格内容为空白。
②首先使用Match精确查找到E2单元格的姓名在姓名所在区域B2:B10中的位置,例如姓名为“白龙马”时,返回数字6。因为姓名所在区域在第二行开始、包含一行表头。用返回的位置 1,得到姓名所在的行数。
③用indirect函数间接引用A列对应的单元格区域。
④最后用lookup函数的查询所选单元格区域最后一个文本型数据就可以实现合并单元格查询。
8.根据简称查询全称:
(1)操作方法:
在F2单元格输入下方公式,回车确定向下填充就可以快速搞定。
=LOOKUP(1,0/FIND(E2,$A$2:$A$7),$A$2:$A$7)
(2)解析:
①首先使用FIND函数判断A2:A7单元格中是否包含E2单元格中的内容,如果包含则返回其位置,否则返回错误值#VALUE!。用0除以这个包含位置和错误值的数组,得到一个只包含0和错误值的数组。
②其他解释参考正常查询。
9.根据全称查询简称:
(1)操作方法:
在D2单元格输入下方公式,回车确定向下填充就可以快速搞定。
=LOOKUP(9E 307,FIND($A$2:$A$4,C2),$A$2:$A$4)
(2)解析:
①首先用Find函数判断简称单元格区域A2:A4中是否被C2的全称包含在内,如果包含则返回其位置,否则返回错误值#VALUE!。最终,构造一个由位置和错误值构造的数组并且只包含位置这一个数字。
②利用Lookup忽略错误值和找不到lookup_value,则查找array和 lookup_vector中小于lookup_value的最大数值的特性就可以实现根据全称查简称。
10.提取字符串中的数字:
(1)数字在开头:
操作方法:在D2单元格中输入下方的公式回车确定即可。
=LOOKUP(9E 307,--LEFT( B2,ROW(1:100)))
解析:
①ROW(1:100)构造了一个由数字1、2、3、4……100构成的数组,也可以不设置100只要大于字符串中数字的个数即可。
②用left函数分别提取B2单元格最左面的1、2、3、4……个字符,,本实例中提取的分别为“圆”、“圆周”、“圆周率”……等等;注意用Left、Right等函数截取字符串中的数字为文本型数字。
③“--”的功能是将left等字符串处理函数返回的文本型数字转化成数值型数字;将包含文字或字母的字符串转化为错误值。此外, 0、-0、*1、/1都可以将文本型数字转化成数值型数字。
④最后,利用Lookup忽略错误值和找不到lookup_value,则查找array和 lookup_vector中小于lookup_value的最大数值的特性就可以实现提取数字在字符串开头的字符串中的数字。
(2)数字在结尾:
操作方法:在D3单元格中输入下方的公式回车确定即可。
=LOOKUP(9E 307,--RIGHT( B3,ROW(1:100)))
解析:Right函数是提取字符串中右侧字符用的函数,其他解析参考(1)的解释。
(3)数字在中间:
操作方法:在D4单元格中输入下方的公式Ctrl Shift Enter三键确定即可。
=LOOKUP(9E 307,--MID(B4,MATCH(1,MID(B4,ROW(1:100),1)^0,0),ROW(1:100)))
解析:
①MID(B4,ROW(1:100)的功能是分别从第1位、第2位、第3位……提取B4单元格中的一个字符。例如,本实例中提取的分别为“圆”、“周”、“率”……等等。最终,构成一个只包含一个字符的数组。
②将①所得到的只包含一个字符的数字数字^0(0次方处理),如果截取的是数字的元素是文本型数字则返回数字1,否则返回错误值。最终,构成一个只包含数字1和错误值的数组。
③MATCH(1,MID(B4,ROW(1:100),1)^0,0)的功能是返回②所述数组第一个数字1出现的位置。本实例中返回的位置是7,也就是数字3出现的位置。
④使用MID(B4,③得到的开始位置,ROW(1:100)))分别在第一数字出现的位置开始截取1、2、3……个字符。本实例中返回的是3、3.、3.14、3.141……。
⑤使用“--”将④所得的文本型数字转化成数值型数字,其他解释参考(1)的解析。
总结,Lookup函数的这些高阶用法你学会了吗?
评论 (0)