ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 60538|回复: 17

[原创] LOOKUP函数在多条件查找中的应用

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2016-7-7 17:36 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 boyihuang 于 2016-7-7 20:41 编辑

一般在日常工作应用中,需要查找数据时,VLOOKUP函数/HLOOKUP函数是最常用的。似乎LOOKUP函数用得少一些。但是,相对VLOOKUP/HLOOKUP,LOOKUP函数的自由度更大,在某些条件下表现得更强悍。比如多条件查找数据。

今天就主要讲讲LOOKUP函数的多条件查找在工作中可能的应用。


语法
LOOKUP(lookup_value,lookup_vector,result_vector)
LOOKUP(lookup_value,array)


要点
1.    LOOKUP函数查找方式是“模糊查找”,没有像VLOOKUP和HLOOKUP那样可以设置精确查找的参数。
2.    LOOKUP函数用“二分法”进行查找。
3.    返回小于等于lookup_value(查找值)的最大值。
4.    Lookup_vector(查找区域)中如果有“错误值“,那么LOOKUP函数在查找时将会忽略错误值


先看一个VLOOKUP函数应用的例子:

01VLOOKUP函数.png
在绿色单元格输入姓名,B12,C12通过VLOOKUP公式很容易可以查找到相应部门和职务,显然这是单个条件(A12)的查找。


假如我想反过来,输入部门和职务,查找到相应的名字呢?怎么做?
嵌套IF函数当然可以完成,但是多重嵌套IF函数容易出错,效率低。一般我们尽量避免嵌套多重IF函数。没错,用LOOKUP函数。

02LOOKUP函数.png

我来解释一下 =LOOKUP(1,0/((B2:B8=E2)*(C2:C8=F2)),A2:A8) 这个公式。

B2:B8=E2
B2:B8与E2比较,返回的是一个数组,结果只有TURE和FALSE(即1和0)。如果在查找区域找到了“研发部“,那返回的数组里有一个1和6个0。


C2:C8=F2
C2:C8与F2比较,返回的是一个数组,结果只有TURE和FALSE(即1和0)。如果在查找区域找到了“副经理“,那返回的数组里有一个1和6个0。


((B2:B8=E2)*(C2:C8=F2))
两个数组进行乘法运算,最后得出的也是一个7行一列的数组,同样可能包含1和0。
(关于数组以及数组运算的原理,上一篇文章有详细介绍。)


0/((B2:B8=E2)*(C2:C8=F2))
0除以任何数(0除外)等于0;但如果被除数为0,则返回错误值。

到此为止,如果在B列和C列都找到符合条件的数据,那么0/((B2:B8=E2)*(C2:C8=F2)) 返回的数组里就一定有一个0值,其它为错误值。见下图:(需要查看某一段公式的运算结果,在公式栏中将其“抹黑”,再按F9键即可。)

03查看运算结果.png


LOOKUP(1,0/((B2:B8=E2)*(C2:C8=F2)),A2:A8)
在{#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;0;#DIV/0!}里查找1,结果返回A2:A8的对应数据。
PS:请在回头看看上面的“要点“。
0小于1,同时忽略了错误值。0为数组中的第六行数据,所以返回的结果必然是A2:A8中的第六行数据(即A7)。


上面的例子是两个条件查找,多个条件查找也是同样的格式:
LOOKUP(1,0/((条件1)*(条件2)*(条件3)*…(条件n)), 结果区域)
这个公式涉及了数组,一旦理解了这个公式,那么在多条件查找的时候将非常好用。


IFERROR(LOOKUP(1,0/((B2:B8=E2)*(C2:C8=F2)),A2:A8),"无记录")
这个公式在原来公式的基础要再套了一个IFERROR函数,目的是万一源数据表里没有相关记录,不至于出现”#N/A!”这种不和谐的符号而已。

04IFERROR函数.png


当然,LOOKUP函数的用法远不止这一种,利用LOOKUP函数“模糊查找”的属性,还可以是实现对学生成绩的等级判定,销售人员的佣金比例等级判定等等。

掌握LOOKUP函数,那你的手里又多了一个强悍的数据查找工具。

评分

4

查看全部评分

TA的精华主题

TA的得分主题

发表于 2017-4-27 20:27 | 显示全部楼层
您好,今天读了您的帖子,也在实际使用,多条件搜索效果非常好。但是搜索的多了以后,excel右下会经常显示“正在计算(4个处理器)12%”,这样的%进度提示。

请问,lookup这个这个函数是不是会很占用资源?

我的应用情景是:表一是个基础数据表,数据很多。然后根据表二的四个参数,搜索表一里符合条件的结果,最终需要输出60多个结果。

如果lookup很占用资源,那有什么其他好的办法可以替代呢?谢谢!

TA的精华主题

TA的得分主题

发表于 2017-8-28 09:31 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2017-8-28 09:55 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2017-8-28 16:45 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2017-9-7 14:21 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
不错的帖子 ,学习了,谢谢

TA的精华主题

TA的得分主题

发表于 2017-12-22 11:22 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
紫竹箫2003 发表于 2017-4-27 20:27
您好,今天读了您的帖子,也在实际使用,多条件搜索效果非常好。但是搜索的多了以后,excel右下会经常显示 ...

我记得countif函数,vlookup函数反向查找也都会很占用资源。你把附件上传我试试看。

TA的精华主题

TA的得分主题

发表于 2018-5-10 16:21 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
不同工作表中,可以使用此函数吗

TA的精华主题

TA的得分主题

发表于 2018-5-10 17:36 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-5-16 19:27 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-27 10:36 , Processed in 0.057157 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表