只会VLOOKUP?这些组合查找技巧让你效率翻倍
前两天有个做财务的读者私信问我:"沈哥,我每天要用VLOOKUP查几百行数据,一旦找不到就报#N/A错误,手动手改太累了,有没有更好的办法?"
说实话,VLOOKUP确实是大多数人的"查找启蒙",但Excel的查找函数远不止这一个。更关键的是——单个函数能做的事有限,真正厉害的是把几个函数组合起来用。
今天这篇文章,我把工作中最常用的4种查找函数组合技巧整理出来了。从容错查找到多条件查找,从一对多查询到反向查找,每个都配了真实场景示例。看完之后你会发现,以前花半小时手动核对的活儿,现在一个公式就能搞定。
一、单个查找函数的局限:为什么需要"组合拳"?
先回顾一下我们常用的三个查找函数,以及它们各自的"硬伤":
函数 | 能做什么 | 硬伤 |
VLOOKUP | 按条件从左到右查找 | 只能向右查找;找不到报#N/A;不支持多条件 |
XLOOKUP | 任意方向查找,内置容错 | 仅Excel 365/2021支持;多条件仍需辅助 |
INDEX+MATCH | 灵活查找,支持多条件 | 公式较长,新手容易写错;不支持一对多 |
看到没?每个函数都有自己的短板。但在实际工作中,我们遇到的问题往往不是"单一查找"能解决的——比如要同时按部门和姓名查工资,比如查找不到时要显示"未找到"而不是错误值。
这时候,函数组合的价值就体现出来了。

▲ 常见查找函数对比一览
二、组合1:XLOOKUP + IFERROR —— 容错查找
这是最基础也是最实用的组合。场景很简单:查不到的时候,别给我显示吓人的 #N/A,而是返回一个友好的提示。
【适用场景】
员工信息查询、产品价格查询、任何可能"查不到"的 lookup 场景。
【示例数据】
假设 A 列是员工编号,B 列是姓名,C 列是部门。现在要根据员工编号查姓名,编号不存在时显示"未找到该员工"。
【语法说明】
基础 XLOOKUP 写法:
=XLOOKUP(查找值, 查找范围, 返回范围)
加上 IFERROR 容错:
=IFERROR(XLOOKUP(H2, A:A, B:B), "未找到该员工")
【工作原理】
IFERROR 会"包住" XLOOKUP 的结果。如果 XLOOKUP 正常返回姓名,IFERROR 就原样输出;如果 XLOOKUP 返回 #N/A 错误,IFERROR 就会捕获这个错误,替换为你指定的"未找到该员工"文本。
【小贴士】
如果你用的是 Excel 365,XLOOKUP 本身就有"如果找不到"参数,可以写成 =XLOOKUP(H2, A:A, B:B, "未找到该员工"),不需要 IFERROR。但如果是 2019 或更早版本,就必须用 IFERROR 来兜底。
三、组合2:INDEX + MATCH + IF —— 多条件查找
多条件查找是工作中出现频率极高的需求。比如"查销售部的张三的工资",这里有两个条件:部门 = 销售部,姓名 = 张三。VLOOKUP 本身不支持多条件,XLOOKUP 也需要借助辅助列。而 INDEX + MATCH 组合可以天然实现。
【适用场景】
工资表按部门+姓名查询、销售表按区域+产品查销量、考勤表按月份+工号查出勤天数等。
【示例数据】
A 列:部门,B 列:姓名,C 列:基本工资。要查"销售部"+"张三"的基本工资。
【公式写法】
=INDEX(C:C, MATCH(1, (A:A="销售部")*(B:B="张三"), 0))
注意:这是数组公式,在旧版 Excel 中需要按 Ctrl+Shift+Enter 确认。Excel 365 直接回车即可。
【语法拆解】
• INDEX(C:C, 行号) —— 从 C 列(基本工资列)中,按行号取出对应的值
• MATCH(1, 条件数组, 0) —— 在条件数组中查找值 1(即同时满足所有条件的位置)
• (A:A="销售部")*(B:B="张三") —— 两个条件分别生成 0/1 数组,用乘号 * 连接,同时满足才为 1

▲ 多条件查找公式语法结构拆解
【进阶:把条件改成单元格引用】
实际工作中,条件通常放在单元格里,方便动态查询:
=INDEX(C:C, MATCH(1, (A:A=H1)*(B:B=H2), 0))
H1 输入部门,H2 输入姓名,公式自动返回对应工资。换个条件,结果就跟着变。
四、组合3:XLOOKUP + 动态数组 —— 一对多查找
前面几种都是"一对一"查找:一个条件对应一个结果。但有时候,一个条件对应多条记录——比如"销售部"有好几个员工,你想一次性把所有人都查出来。
【适用场景】
按部门列出所有成员、按日期查当天所有订单、按客户名查所有购买记录等。
【示例数据】
A 列:部门,B 列:姓名,C 列:入职日期。要查"销售部"的所有员工。
【公式写法(Excel 365)】
=XLOOKUP("销售部", A:A, B:B)
没错,就这一行。在 Excel 365 中,如果查找范围中有多个匹配值,XLOOKUP 默认只返回第一个。要实现一对多,需要用 FILTER 函数配合:
=FILTER(B:C, A:A="销售部")
FILTER 函数会把所有满足条件的记录一次性"溢出"显示在多个单元格中,这就是 Excel 365 的"动态数组"特性(spilled array)。不需要下拉、不需要数组公式,结果自动填充。
【如果不是 Excel 365 怎么办?】
旧版 Excel 实现一对多查找比较麻烦,常见方案是用辅助列 + VLOOKUP,或者用 INDEX + SMALL + IF 的数组公式组合。如果你有 365,强烈建议直接用 FILTER,效率提升至少 5 倍。
五、组合4:VLOOKUP + CHOOSE —— 反向查找的另一种思路
VLOOKUP 只能"从左往右"查——查找值必须在查找范围的第一列,返回结果在右边的列。如果要反过来,根据 B 列的值查 A 列的信息,VLOOKUP 就傻眼了。
常见解法是用 INDEX + MATCH,但这里介绍另一个思路:VLOOKUP + CHOOSE 函数组合。
【适用场景】
根据姓名查工号、根据产品名查编码、任何需要"从右向左"查找的场景。
【公式写法】
=VLOOKUP(H2, CHOOSE({1,2}, B:B, A:A), 2, 0)
【语法拆解】
• CHOOSE({1,2}, B:B, A:A) —— 把 B 列和 A 列重新组合成一个虚拟的两列表格,B 列在前(第1列),A 列在后(第2列)
• VLOOKUP 在这个虚拟表格中查找,就能"从右向左"获取数据了
• 参数 2 表示返回第 2 列(即 A 列的数据),0 表示精确匹配
【对比方案】
同样的需求,用 INDEX + MATCH 的写法是:
=INDEX(A:A, MATCH(H2, B:B, 0))
两种方法都可以,INDEX + MATCH 更简洁直观,但 VLOOKUP + CHOOSE 的优势在于逻辑更清晰(先构建虚拟表,再查找),适合需要频繁调整查找列的场景。

▲ XLOOKUP + IFERROR 容错查找流程
六、实战案例:工资表多条件查询的3种写法对比
最后,用一个完整的实战案例把今天的内容串起来。假设你有一张工资表(200行数据),结构如下:
A列 | B列 | C列 | D列 | E列 |
部门 | 姓名 | 基本工资 | 绩效奖金 | 实发工资 |
需求:根据"部门+姓名"查出"实发工资"。
写法1:VLOOKUP + 辅助列(传统方法)
① 在 F 列建辅助列,公式 =A2&B2(拼接部门和姓名) ② 查找公式 =VLOOKUP(H1&H2, F:E, 2, 0) 缺点:需要额外一列,数据量大时影响性能
写法2:INDEX + MATCH + IF(数组公式)
=INDEX(E:E, MATCH(1, (A:A=H1)*(B:B=H2), 0))
优点:不需要辅助列,兼容 Excel 2019 及以上版本 缺点:Ctrl+Shift+Enter 确认,公式较长
写法3:XLOOKUP(Excel 365,需拼接查找值)
=XLOOKUP(H1&H2, A:A&B:B, E:E, "未找到")
优点:最简洁,自带容错,直接回车 缺点:仅 365/2021 可用,多条件需要拼接查找范围
三种写法对比:
写法1 | 写法2 | 写法3 | |
是否需要辅助列 | 需要 | 不需要 | 不需要 |
兼容版本 | 2007+ | 2019+ | 365/2021 |
推荐指数 | ★★☆ | ★★★★ | ★★★★★ |
综合来看,如果你有 Excel 365,写法3 是最优解——简洁、灵活、自带容错。如果是旧版本,写法2 是最稳的选择。
七、查找函数选择决策树
最后送你一个简单的选择指南,帮你快速决定用哪个函数组合:
❶ 你的 Excel 是 365/2021 吗?
→是:优先用 XLOOKUP,需要容错加第四参数,需要一对多配合 FILTER
→否:继续看下面 ↓
❷ 只需要单条件查找?
→是:VLOOKUP(向右查)或 INDEX + MATCH(任意方向)
→否:继续看下面 ↓
❸ 需要多条件查找?
→是:INDEX + MATCH + 数组条件(乘号连接)
→也可以:VLOOKUP + CHOOSE 构建虚拟表
❹ 查不到要友好提示?
→任意函数外面套一层 IFERROR
记住一句话:没有最好的函数,只有最合适的组合。根据你用的 Excel 版本和实际需求,选择对应的方案就好。
写在最后
Excel 查找函数是职场效率的基石。很多人停留在"会用 VLOOKUP"的阶段,遇到复杂需求就只能手动处理。其实只要多了解一层函数组合的技巧,很多看似复杂的查询需求,都能用一个公式优雅地解决。
今天分享的 4 种组合,覆盖了日常 90% 的查找场景。建议收藏起来,下次用到的时候直接翻出来套公式。
如果觉得有用,欢迎转发给还在手动查数据的同事。我们下篇见。
有用就点个赞吧 👍
夜雨聆风