lookup函数:从单行或单列或从数组中查找一个值。条件是事兼容性
浏览人数:一、函数英语单词
lookup美['lʊkˌʌp]英['lʊkʌp]
- v.查找;查阅;探望;看望
二、函数含义和参数
函数的分类属于:查找与引用函数打开excel表格,点击编辑栏前的插入函数图标fx,弹出插入函数窗口,在选择类别中选择分类:查找与引用函数,可看到该函数的官方解释:

函数lookup的含义和参数:
从单行或单列或从数组中查找一个值。条件是事兼容性
lookup(…)
三、函数的使用方法及实例
实例一:必须理解lookup的逻辑演示,我们以一个序号和对应的名称为例,我们要查询一部分原序号中并不存在的序号,看会显示什么样的内容。

E2单元格的公式为:
=LOOKUP(D2,$B$2:$B$9)
使用了2个参数,第1个为查询的值,第2个为原始区域,因为没有第3个参数,所以,返回的结果,只能是在区域中进行匹配。
当查询为1时,返回原区域中存在的内容,序号值为1,当查询的值介与原始值的中间时,取小值所对应的序号。
比如3在原始序号中不存在,存在相近的是1和5,取值小一点的,值为1.
同时,如果我们要通过查询序号来获得名称,则使用的方法如下:

F2单元格的公式为:
=LOOKUP(D2,$B$2:$B$9,$C$2:$C$9)
使用了3个参数,前2个是查询和区域,第3个为要显示的内容,序号1对应的1,对应的名称是阴阳赵,而序号3不存在,对应相对较小的1,取的值也是1所对应的名称,阴阳赵,其他的逻辑类同。
实例二:用lookup实现逆向查询。
先来gif动画演示效果吧。

E6单元格公式内容为:
=LOOKUP(0,0/(B6:B12=D6),A6:A12)

解析:
=LOOKUP(12,0/(B6:B12=D6),A6:A12)
细心的朋友会发现,gif动画中,lookup的第1个参数,我写的是0,而在后面的静态图片中,显示的是12,结果excel都能显示出正确的结果。
而此公式能运算出正确的结果,重点在这里:
0/(B6:B12=D6)
再来看一个gif动画演示,看一下名字相同时,公式会运算出来什么,命名不相同时,又会运算出来什么结果。

总结:当名字相同的时候,是真值,0/真,运算的结果就是0
而当名字不相同的时候,是假值,0/假,结果就是错误。
所以,这个里面,只有一个是正确的,就能找出这个正确的值所对应的班级了。
这个里面,就是利用了Excel的错误,只要能计算出惟一1个正确的,其他的,就不是excel所查找的。进而得出需要的结果来。
而为什么lookup第1个参数只要是大于等于0的数都行,是因为lookup函数查找的是相近值,而这么多值中,只有一个0,那也只有0这个值和前面的正数相近。别无他选了。
案例三:当条件区域是合并单元格时,应如何进行条件求和。
我们下图为例,区域A1:B10为各产品的销量表。要求计算D2单元格指定产品的总销量。
可以看出,A列是合并单元格的方式,而B列是逐条显示,如果A列不进行合并,可以直接使用sumif或者sumifs,或者是sum和if的复合,都是可以求得结果。

因为合并是美化了表格,但对于实际的运算时,产生了难度。不能直接求和使用,下面进行分析和处理。
二、计算步骤
在E2单元格输入公式
=SUM((LOOKUP(ROW($2:$10),IF($A$2:$A$10<>"",ROW($2:$10)),$A$2:$A$10)=D2)*$B$2:$B$10)
这个公式里面的难点,就是对lookup函数的理解,此部分的目的就是对合并的单元格处理成不合并的效果。
此公式为数组,需要按Ctrl+Shift+Enter结束。

公式解析:
(1)我们先手动对A列取消合并单元格后,可以看到结果如下图所示。
可以看见A2、A5、A7单元格对应原产品名称,有数据,而单元格A3:A4、A6、A8:A10均为空值,没有内容。
如果直接使用使用SUMIFS函数条件求和,结果只是求出了部分销量的值,所以,运算的结果是错误的,而这个错误的原因就是合并单元格所导致的。

使用LOOKUP函数和IF函数就是将A2:A10中空值的单元格补齐相应的产品数据。
(2)IF($A$2:$A$10<>"",ROW($2:$10))
使用if函数,对A2:A10非空单元格的行号进行判断,当非空时,显示对应的行号,如果是空值,则显示FALSE,最后组成数组的形式
{2;FALSE;FALSE;5;FALSE;7;FALSE;FALSE;FALSE}
(3)LOOKUP(ROW($2:$10),IF($A$2:$A$10<>"",ROW($2:$10)),$A$2:$A$10)
lookup的作用,就是把2作为一个原始区域,搜索2到10的值,从而显示对应的产品名称,这个例子,可以参考案例一的内容。
行号为3时,在原始区域中是不存在的,则会显示行号2的内容,对应的产品名称就是产品A
LOOKUP(ROW($2:$10),{2;FALSE;FALSE;5;FALSE;7;FALSE;FALSE;FALSE} ,$A$2:$A$10)
LOOKUP函数在{2;FALSE;FALSE;5;FALSE;7;FALSE;FALSE;FALSE}中查找{2;3;4;5;6;7;8;9;10},并返回与查找到的值同一行的A2:A10的值。
例如查找值为“2”,则返回A2单元格的值“产品A”。
查找值为“3”,在{2;FALSE;FALSE;5;FALSE;7;FALSE;FALSE;FALSE}中没有3,LOOKUP函数查找小于“3”的最大值,也就是“2”,返回A2单元格的值“产品A”。
以此类推,LOOKUP函数最终返回的结果为{"产品A";"产品A";"产品A";"产品B";"产品B";"产品C";"产品C";"产品C";"产品C"}。这样就可以将解析(1)中提到的A2:A10中的空值补齐。
(4)LOOKUP(ROW($2:$10),IF($A$2:$A$10<>"",ROW($2:$10)),$A$2:$A$10)=D2,将LOOKUP函数返回的{"产品A";"产品A";"产品A";"产品B";"产品B";"产品C";"产品C";"产品C";"产品C"}与D2单元格指定的产品名称比较,返回的结果为一组True和False值,即{FALSE;FALSE;FALSE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE}
(5)SUM((LOOKUP(ROW($2:$10),IF($A$2:$A$10<>"",ROW($2:$10)),$A$2:$A$10)=D2)*$B$2:$B$10),将满足条件的销量求和。
案例四:只对A列求各部门的人数
A1:B10为公司各部门人员名单。你知道如何用公式统计“销售部”总人数吗?

可以在E2单元格输入公式:
=SUM(--(LOOKUP(ROW($2:$10),IF($A$2:$A$10<>"",ROW($2:$10)),$A$2:$A$10)=D2))
按Ctrl+Shift+Enter键结束公式输入。

制作表格zhizuobiaoge.com
Copyright@all rights reserved