夜雨聆风学习资料网

ARTICLE · 1290619

Excel小技巧:你是不是常用vlookup? Lookup函数你会用吗?

Excel小技巧:你是不是常用vlookup? Lookup函数你会用吗?

LOOKUP有两种形式:向量形式和数组形式。

向量形式的语法是:

=LOOKUP(查找值, 查找范围, 返回范围)

比如你在A列找姓名,想从B列返回对应的部门,就写成:

=LOOKUP("张三", A2:A10, B2:B10)

数组形式只写两个参数,但微软官方强烈不推荐使用,因为它的规则比较"诡异"——会根据区域是宽还是高,自动决定从哪一行或哪一列查找和返回,很容易翻车。

所以记住:日常使用,只记向量形式就够了。


技巧一:区间分档,告别嵌套IF

这是LOOKUP最经典的用法。比如你要根据分数自动评定等级:

分数下限
等级
0
不及格
60
及格
70
中等
80
良好
90
优秀

公式这样写:

=LOOKUP(B2, {0,60,70,80,90}, {"不及格","及格","中等","良好","优秀"})

如果B2是78,LOOKUP找不到78,就会自动匹配小于等于78的最大值——也就是70,返回"中等"。

比写四五层嵌套IF清爽太多了。

关键前提:分档值必须升序排列。


技巧二:精确查找的万能套路

LOOKUP默认是近似匹配,那能不能做精确查找?可以,用一个固定套路:

=LOOKUP(1, 0/(条件区域=条件值), 返回区域)

比如根据姓名查部门:

=LOOKUP(1, 0/(A2:A10="张三"), B2:B10)

原理很简单:0/(A2:A10="张三") 会把匹配的行变成0,不匹配的变成错误值。LOOKUP查找1时找不到,就会忽略错误值,定位到最后一个0的位置,返回对应的结果。

这个套路的好处是:不需要数据排序,而且支持多条件。

多条件写法:

=LOOKUP(1, 0/((A2:A10="张三")*(B2:B10="销售部")), C2:C10)

用乘号 * 连接多个条件即可(*表示且,+表示或)。


技巧三:取最后一行/最后一个非空值

数据经常变动,想自动取最后一行的内容?LOOKUP也能搞定。

取最后一行数字:

=LOOKUP(9E+307, A:A)

取最后一行文本:

=LOOKUP(REPT("座",255), A:A)

【REPT("座", 255) 的意思是把"座"字重复255次,生成一个超长的文本字符串。在Excel的字符编码排序中,"座"是一个编码值很大的汉字(接近常用汉字的末尾)。重复255次后,这个字符串几乎比任何实际文本都"大"。LOOKUP找不到这么大的值,就会自动退回,匹配最后一个比它小的文本——也就是A列最后一个非空文本单元格。

选"座"没有特殊含义,选"做""坐""最"等编码较大的汉字也可以,关键是它够"大"、够"靠后"。】

取最后一个非空单元格(不限类型):

=LOOKUP(2, 1/(A:A<>""), A:A)

这个在做动态报表、自动汇总时特别好用,数据增加多少行都不怕。


技巧四:逆向查找

VLOOKUP只能从左往右查,如果返回值在查找值的左边,VLOOKUP就束手无策了。LOOKUP没有这个限制。

比如姓名列在B列,工号在A列,想根据姓名查工号:

=LOOKUP(1, 0/(B2:B10="张三"), A2:A10)

直接搞定,不需要调整表格结构。


技巧五:填充合并单元格

如果表格里有合并单元格,下拉填充时会出现空白。用LOOKUP可以自动向上"继承"上一个非空值:

=LOOKUP("做", B$2:B2)

【这里的“做”的意义同上述的“座”】

注意第二个参数用了混合引用B$2:B2,公式下拉时范围会自动扩大,始终取当前区域内最后一个文本值。


LOOKUP vs VLOOKUP vs XLOOKUP

简单说:老版本用LOOKUP补位,新版本直接上XLOOKUP。


最后提醒两个坑

  1. LOOKUP近似匹配要求数据升序,不排序结果一定错。
  2. 查找值比最小值还小时,会返回#N/A,记得做好边界判断。

今天的小口诀

区间分档用LOOKUP,多条件查用万能套路;最后一行自动取,逆向查找不求人。


——E晓分享,共同进步——

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料