VLOOKUP函数可说是各位表亲最熟悉的查找函数了,但在实际应用中,很多时候却是力不从心。比如说从指定位置查找、多条件查找、逆向查找等等。
这些VLOOKUP函数实现起来颇有难度的功能,有一个函数却可以轻易实现。她,就是今天的主角——LOOKUP。
一、查找最后一条符合条件的记录
公式的模式化写法为:
=LOOKUP(1,0/(条件区域=条件),查询区域)
二、查询符合多个条件的记录
公式的模式化写法为:
=LOOKUP(1,0/((条件区域1=条件1)*(条件区域2=条件2)),查询区域)
三、逆向查询
最后的查询区域可以灵活写成任意一列,从右至左、自下而上查询,统统没问题。
四、查询最后一笔业务日期
公式的模式化写法为:
=LOOKUP(1,0/(条件区域<>""),查询区域)
本例来说,公式可以简化为:
=LOOKUP(1,0/B4:B11,$A4:$A11)
但是只适合条件区域为数值的情况,而失去通用性了。
五、模糊查询考核等级
这种方法可以取代IF函数完成多个区间的判断查询,前提是对照表的首列,必须是升序处理。
六、提取单元格内的数字
A2公式为
=-LOOKUP(1,-LEFT(A2,ROW($1:$99)))
首先用LEFT函数从A2单元格左起第一个字符开始,依次返回长度为ROW($1:$99)也就是1至99的字符串,添加负号后,数值转换为负数,含有文本字符的字符串则变成错误值。
LOOKUP函数使用1作为查询值,在由负数、0和错误值构成的数组中,忽略错误值提取最后一个等于或小于1的数值。
最后再使用负号,将提取出的负数转为正数。
七、带合并单元格的查询
下图中,根据E2单元格的姓名查询A列对应的部门。
参考公式:
=LOOKUP("座",INDIRECT("A1:A"&MATCH(E2,B1:B8,)))
简单解释一下:
MATCH(E2,B1:B8,)部分,精确查找E2单元格的姓名在B列中的位置。返回结果为4。
用字符串"A1:A"连接MATCH函数的计算结果4,变成新字符串"A1:A4"。
用INDIRECT函数返回文本字符串"A1:A4"的引用。
如果MATCH函数的计算结果是5,这里就变成"A1:A5"。同理,如果MATCH函数的计算结果是10,这里就变成"A1:A10"。也就是这个引用区域会根据E2姓名在B列中的位置动态调整。
最后用=LOOKUP("座",引用区域)返回该区域中最后一个文本的内容。
=LOOKUP("座",A1:A4)
返回A1:A4单元格区域中最后一个文本,也就是财务部,得到小美所在的部门。
图文作者:祝洪忠
投稿邮箱:[email protected]
Excel数据之美 - 第1期
公开课时间:2017-5-16(20:00~21:30)
正式课时间:2017-6-1 —— 2017-6-27
讲师:三土
课程详情:http://t.excelhome.net/thread-45015-1-1.html
公开课QQ群 596409684