同一个查找需求,8 种函数解法对比:哪种最快、哪种最稳

2026-10-21 8 次浏览 Excel 函数
查一个值取另一个值,Excel 至少有 8 种写法:VLOOKUP、LOOKUP、INDEX+MATCH、XLOOKUP、SUMIF、SUMPRODUCT、FILTER、OFFSET。这篇把它们摆在一起跑同一张表。

这是我认为最值得写的一篇。

因为绝大多数教程只教一种解法,然后你就以为只有这一种。但实际上,同一个需求,Excel 至少有 8 条路能走,每条路的路况不一样。

知道有几条路,你才能在遇到坑的时候换一条,而不是卡在那儿。

统一的问题:先定死需求

表:

工号姓名部门工资
A001张三技术部12000
A002李四市场部9500
A003王五技术部15000
A004赵六财务部8800

需求:知道工号 `A003`,查出他的工资(15000)。

下面 8 种写法,都在解这一道题。

解法一:VLOOKUP(最主流)

=VLOOKUP("A003", A2:D5, 4, 0)

优点:认知成本最低,所有人一看就懂。想系统学这个函数,见 VLOOKUP 怎么用。

缺点:数"第 4 列"容易数错;插列会静默出错;只能向右查。

适合:一次性小表、要给别人看的表。

解法二:INDEX + MATCH(最稳)

=INDEX(D2:D5, MATCH("A003", A2:A5, 0))

优点:方向不限、插列不乱、结构清晰。想看它和 VLOOKUP 的逐条对比,见 INDEX + MATCH 为什么比 VLOOKUP 好用。

缺点:写起来长一点,新人要理解两个函数。

适合:正式报表、长期维护的表。

解法三:LOOKUP(最短,但有前提)

=LOOKUP(1, 0/(A2:A5="A003"), D2:D5)

优点:短,而且不需要框整个区域(只给两列就行),插列完全不受影响。

缺点:`0/(...)` 这个写法像黑魔法,别人看不懂;数据必须按升序……其实不用,这个技巧本身就绕过了排序要求,但很多人不知道这点而不敢用。

适合:自己用的报表,追求"短且稳"。

关键原理一句话:`0/(条件)` 会把不满足的变成错误值,满足的变成 0。LOOKUP 找 1,实际上是找"最后一个 0",也就是唯一匹配的那一行。

解法四:XLOOKUP(最新最好,但要看版本)

=XLOOKUP("A003", A2:A5, D2:D5)

优点:一个函数搞定,不用数第几列,找不到可以自定义提示,还能向左查。这是微软官方认定的 VLOOKUP 继任者。

缺点:只有 Microsoft 365 和 Excel 2021 才有。 2019 及更早版本、以及大部分 WPS 老版本里都没有。

易错如果你要把表发给同事,而对方的 Excel 版本不确定,别用 XLOOKUP。对方打开会显示 `#NAME?`,而你这边一切正常。这是最尴尬的兼容性问题。

适合:确定所有人都用 365 的环境。

关键顺便说,XLOOKUP 还能带第四个参数(找不到时显示什么):`=XLOOKUP("A003", A2:A5, D2:D5, "查无此人")`。这一点省掉了 IFERROR。

解法五:SUMIF(只适合数字,但极简)

=SUMIF(A2:A5, "A003", D2:D5)

优点:极短,而且如果你已经会 SUMIF,零学习成本。

缺点:只能取数字。 要查"部门"这种文字就返回 0。而且如果有多条同工号的记录,它会把它们加起来(这是隐患)。

适合:查数字、且确定键值唯一。

关键反过来说,这个"会加起来"的特性,在"一个工号有多条工资记录,要合计"的场景里,反而是正解。

解法六:SUMPRODUCT(不用按 Ctrl+Shift+Enter 的数组公式)

=SUMPRODUCT((A2:A5="A003")*D2:D5)

优点:不用数组三键,任何版本都能跑;能做多条件(`(条件1)*(条件2)*求和列`)。

缺点:只能返回数字。

适合:多条件求和,且不想用 SUMIFS 的时候。

解法七:FILTER(365 专属,能返回一整行)

=FILTER(D2:D5, A2:A5="A003")

优点:能一次返回多个结果(如果有多条匹配),自动溢出到相邻单元格。

缺点:365 / 2021 才有。配合 `FILTER(A2:D5, A2:A5="A003")` 可以整行取出。

适合:365 环境下做动态报表。

解法八:OFFSET + MATCH(不推荐,但要知道)

=OFFSET(A1, MATCH("A003", A2:A5, 0), 3)

优点:能"按偏移量取数",在动态图表里有特殊用途。

缺点:OFFSET 是易失性函数,任何单元格变动都会重算,大表里会明显拖慢速度。而且它是"数格子"的思路,极易错位。

适合:基本不用。列在这里是为了让你看到"这条路不好走"。

放到一张表里对比

解法长度能向左查插列安全版本要求返回文字推荐度
VLOOKUP短❌❌全版本✅⭐⭐⭐⭐
INDEX+MATCH中✅✅全版本✅⭐⭐⭐⭐⭐
LOOKUP短✅✅全版本✅⭐⭐⭐⭐
XLOOKUP最短✅✅365/2021✅⭐⭐⭐⭐⭐(限版本)
SUMIF短✅⚠️全版本❌ 仅数字⭐⭐⭐
SUMPRODUCT中✅⚠️全版本❌ 仅数字⭐⭐⭐
FILTER短✅✅365/2021✅⭐⭐⭐⭐(限版本)
OFFSET+MATCH中✅❌全版本✅⭐

我的实际选择顺序

不玩虚的,就按这个来:

  1. 自己用、版本确定是 365 → XLOOKUP,最省事
  2. 要给别人维护、或版本不确定 → INDEX + MATCH,最稳
  3. 临时查一下、就自己看 → VLOOKUP,最快
  4. 查数字、且键唯一 → SUMIF,最短
  5. 多条件 → SUMIFS(求和)或 SUMPRODUCT(任意)
  6. OFFSET → 除非你在做动态图表,否则别碰
关键一句话原则:稳 > 短 > 高级。 一个三个月后还能看懂的公式,比一个炫技但没人敢改的公式值钱得多。

评论 0

还没有评论,来说第一句吧。

发表评论

提交后需审核通过才会显示。

对作品感兴趣?

欢迎交流使用体验、功能建议或技术问题,看到消息我会尽快回复。