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——就是普普通通一个公式,打完收工。