#微函数系列#之LOOKUP函数
LOOKUP函数是一个功能非常强大的查询函数,使用也非常广泛。从函数名称上可以看出它是VLOOKUP函数和HLOOKUP函数的近亲,同时它也具备MATCH函数的某些特征。它可以直接从查询目标中返回匹配的值或相近的值,还可以通过映射关系从另一组相对应的目标中返回数据。
LOOKUP函数包含向量和数组两种用法。
所谓向量用法指的是函数在目标向量(一维的数组或单元格引用)按顺序查找数据,找到匹配数据以后从返回向量中返回与其位置相对应的数据(目标向量和返回向量具有位置映射关系)。如果省略返回向量(第三参数),则直接从目标向量(第二参数)中返回匹配值。
需要注意的是,在一般的查询中,目标向量的数组或单元格引用中,数据需要事先按照升序排列,包括数值、文本和逻辑值。文本也有大小之分,排序依据是字符的内码,例如A<B<C。数值、逻辑值和文本之间的大小顺序是:数值<文本<False<True。
当LOOKUP的查询数据能在目标向量中找到完全匹配的数据时,直接返回该数据或与该数据相映射的数据。如果没有完全一致的数据,则返回其中小于等于查询数据的最大值。
例如LOOKUP(3.5,{1,2,3,4,5})
的返回值为3。
如果查询数据比目标向量中的最小值更小,函数就会返回错误值。
如果目标向量中的数据没有事先排序,也可以变换一种形式来构建LOOKUP公式进行精确匹配查询。例如要在{2,4,1,3,5}中查找3所对应的数据,可以这样构建公式:
=LOOKUP(1,0/({2,4,1,3,5}=3),返回向量)
其中0/({2,4,1,3,5}=3)
的部分会返回一组由错误值和数值“0”所组成的数组,其中的“0”就对应着数组中匹配值“3”的所在位置。根据前述LOOKUP没有精确匹配时的查询规则,将返回小于等于查询目标“1”的最大值,因此这个公式将返回“0”所对应的数据。
Lookup函数的第二种数组用法,指的是在一个二维的数组或单元格引用中查找匹配数据,查找的方向与这个二维数组的宽度和高度有关:如果高度大于等于宽度(纵向长方形),则Lookup函数会在其首列中进行查找,返回其最末列的对应值,类似于VLOOKUP函数的查询方式;如果高度小于宽度(横向长方形),则Lookup函数会在其首行中进行查找,返回其最末行的对应值,类似于HLOOKUP函数的查询方式。
Lookup函数在查询中不区分英文字母的大小写。
Lookup函数的常见应用场景包括:
1,精确匹配查询。
2,升序序列的近似查询。例如分数段的划分,可以替代多个IF条件的嵌套。
3,最末项的查询,通常用Lookup(9E+307
来查询数值数据的最末项,或用Lookup("座"
来查询文本单字符的最末项。
4,与MATCH函数组合,可以进行二维的组合查询。
点击查看大图
一条评论
这个函数真的很棒,非常感谢你的文章,受益匪浅。其他MATCH OFFSET index等没怎么看懂,就这个lookup系列简单好懂,易学易用,函数真的是太棒了。