第15章:MATCH 函数 —— 查找"位置"的侦察兵

查找位置的侦察兵:三种匹配类型

📥 本章配套练习册(数据已录入、写完公式自动判分):点击下载 第15章-MATCH函数-练习.xlsx

难度:⭐⭐⭐ | 建议用时:35 分钟 | 前置知识:第13章 VLOOKUP(理解查找概念)

本章学习目标

  • 理解 MATCH 返回的是位置(第几个),不是值
  • 掌握三种匹配类型(0 / 1 / -1)
  • 为第16章 INDEX+MATCH 黄金组合打地基

一、这个函数是干什么的?

前面学的 VLOOKUP / XLOOKUP 返回的是"值",而 MATCH 返回的是位置——你要找的东西在列表里排第几个

生活化理解:运动会成绩册上找"王五",VLOOKUP 告诉你"王五跑了 78 分",MATCH 告诉你"王五排在名单的第 3 位"。

单独用 MATCH 的场景不多,但它和 INDEX 组合后是 Excel 查找体系的"隐藏王者"(第16章)。

二、语法结构

1
=MATCH(查找值, 查找区域, [匹配类型])
参数 说明
查找值 要找的内容
查找区域 一行或一列的连续区域(不能是多行多列的方块)
匹配类型 0=精确匹配;1=小于等于查找值的最大值(区域须升序);-1=大于等于查找值的最小值(区域须降序)。省略默认 1

匹配类型速记

类型 行为 区域要求 使用频率
0 一模一样才算找到 无要求 ★★★★★(绝大多数情况)
1 找"不超过它的最大值" 必须升序 ★★(区间定位)
-1 找"不低于它的最小值" 必须降序 ★(很少用)

三、基础示例(手把手)

名单表:

A B
1 姓名 成绩
2 张三 85
3 李四 92
4 王五 78
5 赵六 88
6 孙七 95

示例1:王五在第几行?

1
=MATCH("王五", A2:A6, 0)

结果:3

解读:在 A2:A6 里从上往下数:张三(1)、李四(2)、王五(3)——返回区域内的第 3 个位置。 ⚠️ 注意:位置是相对区域数的,不是工作表的行号!王五在工作表第 4 行,但在区域 A2:A6 里排第 3,MATCH 返回 3。

示例2:查找值用单元格引用

F2 输入"赵六":

1
=MATCH(F2, A2:A6, 0)

结果:4(赵六是区域内第 4 个)

示例3:找不到时

1
=MATCH("钱九", A2:A6, 0)

结果:#N/A——和 VLOOKUP 一样,精确匹配找不到就报 #N/A,可以用 IFERROR 包装。

示例4:区间定位(匹配类型 1)

分数段表(升序):

A B
1 分数下限 等级
2 0 不及格
3 60 及格
4 80 良好
5 90 优秀

85 分落在哪个区间?

1
=MATCH(85, A2:A5, 1)

结果:3

解读:类型 1 找"不超过 85 的最大下限":0、60、80 都不超过 85,最大的是 80 → 80 在区域第 3 个位置 → 返回 3。第 16 章会用它配合 INDEX 直接取出"良好"。

四、进阶用法

1. 横向 MATCH

查找区域也可以是一(如表头行 B1:D1):

1
=MATCH("英语", B1:D1, 0)

返回"英语"在表头中的列位置。第16章的"双向查找"靠它。

2. 判断"存不存在"(比 COUNTIF 更直接)

1
=IF(ISNUMBER(MATCH(F2,A2:A6,0)), "存在", "不存在")

MATCH 找到就返回数字(ISNUMBER 为真),找不到返回错误(ISNUMBER 为假)。

3. MATCH vs VLOOKUP 的思维差异

返回什么 比喻
MATCH 位置:第几个 侦察兵:报告敌人在哪
VLOOKUP :那行的某项内容 快递员:直接把货取回来
INDEX(下一章) 按位置取值 武器:给坐标就打击

MATCH 报位置 + INDEX 取货 = 完整作战链,这就是下一章的内容。

五、常见错误与注意事项

问题 原因 解决
忘记第3参数 省略默认类型 1,精确查找会返回莫名其妙的近似位置 精确查找永远写 0
位置对不上行号 MATCH 返回区域内相对位置,不是工作表行号 区域从第2行开始,实际行号 = MATCH结果 + 1
类型1结果错乱 区域没按升序排 类型 1 必须升序,类型 -1 必须降序
区域选了方块 MATCH 只能单行/单列 把区域收窄成一列或一行
文本数字匹配失败 查找值是数字,区域里是文本(或反之) 统一格式

六、练习题(请先独立完成)

练习数据准备

录入本章名单表(A1:B6)和分数段表(建议放在 D1:E5):

D E
1 分数下限 等级
2 0 不及格
3 60 及格
4 80 良好
5 90 优秀

题目

题号 题目 在何处作答
1 用 MATCH 找出"王五"在 A2:A6 中的位置 F2
2 找出"孙七"的位置 F3
3 查找"钱九",观察结果 F4
4 在 G1 输入"赵六",用引用 G1 的方式找位置 F5
5 用类型 1 找出 85 分落在分数段的第几个位置 F6
6 找出 92 分的位置(类型 1,正好等于某档下限时会怎样?) F7
7 思考:为什么第1题答案是 3 而不是 4?王五明明在工作表第 4 行 ——

七、练习讲解(做完再看)

第1题讲解

=MATCH("王五",A2:A6,0) → 区域内第 3 个 → 3。文本查找值加引号,精确匹配写 0。

第2题讲解

=MATCH("孙七",A2:A6,0) → 孙七是区域最后一个 → 5。

第3题讲解

#N/A——钱九不在名单里。想体面显示就套 IFERROR:=IFERROR(MATCH("钱九",A2:A6,0),"查无此人")

第4题讲解

=MATCH(G1,A2:A6,0) → 赵六是第 4 个 → 4。引用单元格时查找值不用引号。

第5题讲解

=MATCH(85,D2:D5,1) → 不超过 85 的最大下限是 80,80 在 D2:D5 中排第 3 → 3。

第6题讲解

=MATCH(92,D2:D5,1) → 不超过 92 的最大下限是 90(90≤92)→ 90 排第 4 → 4。 要点:类型 1 在"正好等于某档"时,取的就是那一档(≤ 包含等于)。

第7题讲解

MATCH 数的是区域内部的序号:A2:A6 里 A2 是第 1 个、A3 第 2 个、A4(王五)第 3 个。它不看工作表行号。想要工作表行号,把结果加上区域起点前的行数(本例 +1)。


八、参考答案

题号 公式 结果
1 =MATCH("王五",A2:A6,0) 3
2 =MATCH("孙七",A2:A6,0) 5
3 =MATCH("钱九",A2:A6,0) #N/A
4 =MATCH(G1,A2:A6,0) 4
5 =MATCH(85,D2:D5,1) 3
6 =MATCH(92,D2:D5,1) 4
7 MATCH 返回区域内相对位置,非工作表行号 ——

本章小结

  • =MATCH(查找值, 单行或单列区域, 匹配类型):返回位置(第几个)
  • 精确匹配写 0(别省略);类型 1 区间定位须升序
  • 位置是相对区域的序号,不是工作表行号
  • MATCH 单打独斗用处有限,和 INDEX 合体才是完全体——下一章见

下一章:第16章:INDEX 函数

世界是你们
使用 Hugo 构建
主题 StackJimmy 设计