Lookup()与Vlookup()和Hlookup()同属于查找类函数,Lookup()函数仅在单行或者单列中查找,它有两种语法结构:
第一种是向量形式的语法结构:Lookup(lookup_value,lookup_vector,[result_vector]),功能是在某一行或者某一列查找指定的值,然后返回另一行或者另一列相同位置的值。
lookup_value表示要查找的值。
lookup_vector表示在其中查找指定值的单行(或者单行的一维数组)或者单列(或者单列的一维数组)。
[result_vector]可选,表示返回值的行或者列,大小必须与第二个参数lookup_vector一样。
第二种是数组形式的语法结构:Lookup(lookup_value,array),功能是在数组首行或者首列查找指定的值,然后返回数组最后一行或者列相同位置的值。
在介绍Lookup()函数的使用技巧之前,首先强调使用该函数的几个注意事项:
1、查找区域的数据即函数中的第二个参数(数组的首行或者首列)必须按照升序排列,否则结果可能有误。
2、如果在查找区域找不到指定值,则返回小于指定值的最大值。
3、如果指定的查找值小于查找区域的最小值,函数会返回错误值。
我们用实例来演示一下函数的使用方法。
在单元格H2键入公式“=LOOKUP(G2,B2:B10,D2:D10)”,“产品2”是指定的查找值,B2:B11是查找列,D2:D11是返回值的列,与查找列大小相等,语法没有问题,但结果显然不准确,原因是查找列未按照大小排序。
将B列按照“数值”升序排列之后,结果就对了。
以上公式也可以改成数组形式“=LOOKUP(G3,B2:D11)”,结果一样。
接下来,我们介绍几个Lookup的使用技巧:
1、逆向查找
通常查找列在左侧,返回数据列在右侧,反之称为逆向查找。如果想用Vlookup()函数实现逆向查找,需要使用辅助列或者是创建一个内存数组等辅助方式(请参阅Excel中Vlookup()函数使用技巧)。而Lookup()函数自带逆向查找的功能,在单元格N2键入公式“=LOOKUP(M2,B2:B10,A2:A10)”,便能返回位于查找列左侧的序号。
2、多条件判断
提到多条件判断,往往会想到IF()函数的嵌套使用,实际上可以考虑用Lookup()代替,公式可能更加清晰明了。
单元格区域J1:K4为投入标准的规则,据此描述键入公式“=LOOKUP(C2,{0;3000;5000},{"有限投入";"重点投入";"保持投入"})”即可判断不同产品的投入标准。因为函数返回等于或者小于指定值的最大值,所以取区间最小值组成查找列。以公式为例,单元格C2的“3900”是查找值,第一个数组即查找数组中没有相同的值,所以匹配小于“3900”的最大值即“3000”,返回第二个数组相同位置的值即“重点投入”。
3、返回多值
我们希望用一个公式查找所有奇数产品“实际达成”的值并且求和,用Vlookup()函数要颇费些功夫,因为Vlookup()函数即使将第一个参数写作数组也只能返回查找到的第一个值而不能返回一个内存数组,需要借助N()和IF()函数实现(具体请参阅Excel中T()函数和N()函数的使用技巧)。
如果使用Lookup()函数就轻松得多,Lookup()的第一个参数可以是数组并且能够返回一个内存数组参加其它运算。以上公式改为“=SUM(LOOKUP("产品"&{1,3,5,7,9},B2:D11))”,就能得到我们需要的结果。
"产品"&{1,3,5,7,9}通过连接符生成一个奇数产品名称的数组{"产品1","产品3","产品5","产品7","产品9"}作为查找值,B列是查找区域,返回D列的数据,生成一个内存数组{2836,872,5100,8100,600},然后通过Sum()函数求和。
4、有合并单元格数据表格的统计
不需要修改原数据表格或者添加辅助列,在单元格H2键入公式“=SUM(--(LOOKUP(ROW($2:$11),IF($A$2:$A$11<>"",ROW($2:$11)),$A$2:$A$11)=G2))”即可计算各渠道的产品个数。
其中:
ROW($2:$11)生成单元格行号数组{2;3;4;5;6;7;8;9;10;11}作为查找值。
IF($A$2:$A$11<>"",ROW($2:$11))返回查找区域数组{2;FALSE;FALSE;FALSE;6;FALSE;FALSE;9;FALSE;FALSE},其中数字是合并单元格中非空单元格行号,而空单元格返回FALSE。
$A$2:$A$11对应的数组{"线上";0;0;0;"线下";0;0;"其它";0;0}是返回值。
根据Lookup()函数的特性,查找值在查找区域找不到匹配的值时,将匹配小于查找值的最大值,譬如合并的空值单元格A3对应的数字“3”在查找区域找不到匹配值,便返回“2”对应的值“线上”。依次特性,Lookup()函数最后生成一个内存数组{"线上";"线上";"线上";"线上";"线下";"线下";"线下";"其它";"其它";"其它"}。
{"线上";"线上";"线上";"线上";"线下";"线下";"线下";"其它";"其它";"其它"}=G2生成一个逻辑值数组{TRUE;TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE},双减号“--”将逻辑值转化为数值{1;1;1;1;0;0;0;0;0;0},最后Sum()函数求和得出产品个数。
最后再强调一下,以上例图中带了大括号的都是数组公式,需要Ctrl+Shift和Enter三键确认,数组公式可以参阅知道这些Excel数组概念和运算规则,数组公式就豁然开朗了。
Lookup ()函数真香!
联系客服