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

LOOKUP有两种形式:向量形式和数组形式。
向量形式的语法是:
=LOOKUP(查找值, 查找范围, 返回范围)
比如你在A列找姓名,想从B列返回对应的部门,就写成:
=LOOKUP("张三", A2:A10, B2:B10)
数组形式只写两个参数,但微软官方强烈不推荐使用,因为它的规则比较"诡异"——会根据区域是宽还是高,自动决定从哪一行或哪一列查找和返回,很容易翻车。
所以记住:日常使用,只记向量形式就够了。
技巧一:区间分档,告别嵌套IF
这是LOOKUP最经典的用法。比如你要根据分数自动评定等级:
公式这样写:
=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。
最后提醒两个坑
- LOOKUP近似匹配要求数据升序,不排序结果一定错。
- 查找值比最小值还小时,会返回#N/A,记得做好边界判断。
今天的小口诀
区间分档用LOOKUP,多条件查用万能套路;最后一行自动取,逆向查找不求人。
——E晓分享,共同进步——















































































