比vlookup更强大的函数lookup函数(上:向量用法)
之前我们说过vlookup函数的用法,今天来说一个更灵活更强大的函数lookup函数。
-01-
函数说明
这个函数有2种用法:一种是向量用法,一种是数组用法。今天先说向量用法,即下图第一种写法,它的意思是在单行或单列区域(称为“向量”)中查找值,然后返回第二个单行或单列区域中对应的值。
lookup_value:必须有。在第一个向量中查找的值,可以是数值,文本,逻辑值,定义名称和单元格引用。
lookup_vector:只包含一行或一列的单元格区域。其中的值可以是数字,文本和逻辑值,必须以升序排列,否则lookup可能返回错误的值。
result_vector:可选。只包含一行或一列的单元格区域。与lookup_vector区域大小相同。
-02-
示例解释
要在D1单元格中查找A列的数据返回B列的颜色。
在D1单元格中输入公式,结果如下。意思是在A列中查找3.67,然后返回B列中同一行的值。
在D1单元格中输入公式,结果如下。意思在A列中查找4.9,与最接近的较小值(4.85)匹配,然后返回B列中同一行的值。
在D1单元格中输入公式,结果如下。意思在A列中查找100,与最接近的较小值(5.26)匹配,然后返回B列中同一行的值。
在D1单元格中输入公式,结果如下。意思是在A列中查找3,与最接近的较小值匹配,但发现A列中没有比3小的,所以找不到,返回错误值。
由此,我们可以总结:
1.如果lookup函数在第二参数中找不到第一参数,则该函数会与第二参数中小于或等于第一参数的最大值进行匹配,与vlookup模糊查找一样。
2.如果第一参数小于第二参数中的最小值,则lookup会返回#N/A错误值。
-03-
具体应用
1.根据销量求出每个人对应的奖金
A列和B列是销量区间,意思就是大于等于0,小于50000,奖金为1000;大于等于50000,小于100000,奖金为3000;以此类推。在G9单元格中输入公式=LOOKUP(F9,A$9:A$13,C$9:C$13),向下填充。B列可以看作辅助列。这个例子是按升序排列的。下面来个不按升序排列的。
2.查找最后一条记录的姓名和分数
(1).A列为很多无序数字,要求出最后一条记录的姓名,公式为D9=LOOKUP(9E+307,A32:A40,B32:B40),其中9E+307为数字中的最大值,可以理解为A列中默认为升序排列,最后一个是最大的,但还是比9E+307小,所以是最接近9E+307的,就与它匹配。返回B列中同一行的值。
(2).A列为很多无序姓名,求出最后一个名字的分数。公式为D42=LOOKUP("座",A43:A49,B43:B49)。座为汉字中排位最大的一个。可以按上面那个理解。
3.查找最后一次出现的记录
在下表中A列有5个编号,是乱序排列的,B列是对应的分数,现在要求出每个编号最后一次出现的分数。公式为E16=LOOKUP(1,0/(A$16:A$29=D16),B$16:B$29),向下填充。
解释一下,0/(A$16:A$29=D16)这部分的意思是,在A列中所有的编号中等于HB001的返回true,不等于的返回false,形成一个数组;然后0除就是等于true的变成0,等于false的变成错误值,可以按F9查看;LOOKUP(1,0/(A$16:A$29=D16),B$16:B$29)就是查找最后一个0,也就是最后一个等于HB001的,然后返回它对应的分数。
lookup的向量用法,你学会了吗?