VLOOKUP用不好?XLOOKUP用不上?试试这个被大多数人遗忘的函数。
很多人觉得LOOKUP功能单一、不如VLOOKUP灵活,实际上恰恰相反——LOOKUP是Excel里最被低估的查找函数。它不挑方向、不挑数据类型、还能处理模糊匹配和数组操作。今天不讲虚的,直接拆三种硬核用法。
一、LOOKUP的两种形态
LOOKUP有两种形态:向量形式和数组形式。
向量形式(最常用):
LOOKUP(查找值, 查找向量, 返回向量)
在查找向量中找匹配项,返回返回向量中对应位置的值。类似VLOOKUP,但不限制列的方向——可以从右往左查,也可以从下往上查。
数组形式:
LOOKUP(查找值, 数组)
在数组的第一行或第一列中查找值,返回数组最后一行或最后一列对应位置的值。不如向量形式常用。
二、核心用法一:逆向查找
VLOOKUP最大的硬伤:查找列必须在返回列左边。想根据姓名查工号?VLOOKUP做不到,得用INDEX+MATCH组合。
LOOKUP无此限制:
=LOOKUP(1,0/(B2:B10="张三"),A2:A10)
拆解一下:
- B2:B10="张三"返回一组TRUE/FALSE
- 0除以TRUE得0,0除以FALSE得#DIV/0!
- LOOKUP(1, ...)在数组{0,#DIV/0!,0,...}中找1,找不到就返回最后一个数字0对应的位置
- 最终返回A列对应位置的值
不管查找列在哪、返回列在哪,LOOKUP都能搞定。
三、核心用法二:多条件查找
VLOOKUP也能多条件?需要加辅助列把条件拼在一起。LOOKUP直接搞定:
=LOOKUP(1,0/((A2:A10="销售部")*(B2:B10="经理")),C2:C10)
同时满足部门和职位的条件,返回对应的姓名。条件可以加到无限多:(条件1)*(条件2)*(条件3)...
关键是: 条件是AND关系(所有条件同时满足)。如果是OR关系,把乘号改成加号:(条件1)+(条件2)。
四、核心用法三:查找最后一个非空值
LOOKUP有个特性:找不到精确匹配时,返回最后一个小于等于查找值的记录。
利用这个特性,可以很方便地查找最后一个非空值:
=LOOKUP("座", A:A)返回A列最后一个文本值。汉字排序中“座”靠后,通常用来匹配最后一个文本。
=LOOKUP(9.9E+307, A:A)
返回A列最后一个数值。9.9E+307是Excel里能处理的最大数值。
实际场景: 销售数据每天追加新行,你需要始终引用“最新一天的销售额”:
=LOOKUP(9.9E+307, C:C)
无论数据表更新到哪一行,始终返回C列最后一个数值。
五、三个避坑提示
1. 数据必须按查找列升序排列
LOOKUP默认使用二分查找算法,要求查找向量按升序排列。如果数据未排序,可能返回错误结果。
那为什么“0/(条件)”的写法不用排序?因为数组里只有0和错误值,LOOKUP按升序规则找到最后一个0的位置,不依赖数据顺序。这就把LOOKUP从近似匹配变成了精确查找。
2. #N/A怎么处理
用IFNA或IFERROR包一层:
=IFNA(LOOKUP(1,0/(B2:B10="张三"),A2:A10),"未找到")
3. 查找值和查找向量的数据类型要一致
文本查文本、数字查数字。文本带空格也会导致匹配失败,先用TRIM清洗数据。
六、LOOKUP vs VLOOKUP vs XLOOKUP
场景 | LOOKUP | VLOOKUP | XLOOKUP |
逆向查找 | ✅ | ❌需配合其他函数 | ✅ |
多条件查找 | ✅ | ❌需辅助列 | ✅ |
最后一个非空值 | ✅ | ❌ | ❌ |
版本要求 | 所有版本 | Excel 2007+ | Excel 365 |
学习曲线 | 中等 | 低 | 中低 |
XLOOKUP能覆盖LOOKUP的大部分功能,但LOOKUP有两个不可替代的优势:兼容所有Excel版本,不需要365订阅;在查找最后一个非空值这类场景中,写法比XLOOKUP简洁。
如果你的Excel版本不支持XLOOKUP,LOOKUP就是最好的备选。三个核心用法掌握后,90%的查找需求都能用LOOKUP解决。不用辅助列、不用数组公式、不用Ctrl+Shift+Enter——就是普普通通一个公式,打完收工。
