上一篇我们学了XLOOKUP,填了VLOOKUP三个坑。
但XLOOKUP有个硬伤:很多公司还在用Excel 2016甚至2013,根本识别不了。
怎么办?答案是一个比你想象中更强的组合——INDEX + MATCH。
名字看着吓人,拆开其实就两个动作:MATCH先找位置,INDEX根据位置取数。
先学 MATCH:找它在第几个
三个参数,0代表精确匹配。举个例子:
A列500个名字,返回张三在第几行。比如张三在第42行,就返回42。
MATCH不返回你要的值,只返回"位置"——在第几个。
再学 INDEX:取那个位置的值
举个例子:
B列500个值里,取第42行的值——也就是第42行的值。
INDEX不管"找不找得到",只管"你告诉我第几行,我给你值"。
合在一起:INDEX + MATCH
现在把两个组合起来:
MATCH告诉你"张三在A列第42行",INDEX去B列取第42行的值:
=INDEX(B2:B500, MATCH("张三", A2:A500, 0))
翻译成人话:先在A列找到张三在第几行,再去B列取那一行的值。
跟VLOOKUP做的事一模一样,但不数列数、不怕插列、左右随便查。
跟之前一样用员工ID查部门
VLOOKUP写法:
=VLOOKUP("P001", A:B, 2, 0)
INDEX+MATCH写法:
=INDEX(B:B, MATCH("P001", A:A, 0))
拆开读:
部分 | 公式 | 干了什么 |
MATCH | MATCH("P001", A:A, 0)
| 在A列找"P001",返回行号 |
INDEX | INDEX(B:B, 行号)
| 取B列那个行号的值 |
看到了吗?查找列和返回列是独立的,没有"第几列"的概念。
比VLOOKUP强在哪
① 不怕插列
VLOOKUP写死2,中间插一列全错。
INDEX+MATCH只看A列和B列,中间插多少列都不影响——因为它不数列数,直接看列字母。
② 左右随便查
VLOOKUP:查找列必须在返回列左边。
INDEX+MATCH:查找列和返回列各自独立,随便放:
用姓名(C列)查ID(A列):=INDEX(A:A, MATCH("张三", C:C, 0))
C列找张三,A列取值——跨列、往回查,全支持。
③ 老版本也能用
INDEX和MATCH从Excel 2003就存在了,再过二十年也能跑。
XLOOKUP vs INDEX+MATCH 怎么选
场景 | 推荐 |
Excel 2019+/365 | XLOOKUP(更简单) |
Excel 2016及以下 | INDEX+MATCH(唯一方案) |
发同事的表 | INDEX+MATCH(不知道对方版本) |
自己用,快速写 | XLOOKUP(参数少) |
一句话:给别人用选INDEX+MATCH,给自己用选XLOOKUP。
SQL类比
=INDEX(B:B, MATCH("P001", A:A, 0))
就是:
SELECT B FROM 表 WHERE A ='P001';
MATCH = WHERE找到那一行,INDEX = SELECT取出你要的列。
写在最后
五种查找工具,你应该有个清晰的选择了:
工具 | 什么时候用 |
VLOOKUP | 简单场景,偶尔用 |
XLOOKUP | 新版Excel,日常首选 |
INDEX+MATCH | 老版本或发同事,万能兜底 |
不是学得多,是该用哪个用哪个。
周五学综合实战二:一份让老板记住你的月报——把五种查找工具、透视表、条件格式、图表全串起来,从原始数据到月报全流程。
你现在用哪个查找工具最多?VLOOKUP、XLOOKUP还是INDEX+MATCH?评论区亮出你的选择。
点个赞,存起来下次查 👍