Menu

Excel MATCH 函数:查找值在列表中的位置

=MATCH(E2,A2:A6,0) 返回 E2 在 A2:A6 中的位置:如果它是第四项,就返回 4。本文讲解匹配类型 0、1 和 -1、通配符、区分大小写的匹配,以及检查一个值是否在列表中。

本页的每张表格都是实时的:修改数字或公式,就会重新计算。

=MATCH(E2,A2:A6,0) 返回 E2 中的值在 A2:A6 中的位置:第一个单元格是 1,第二个是 2,依此类推。0 表示要求精确匹配。MATCH 返回的是数字而不是值本身,所以它通常和 INDEX 搭配使用。

商品在列表中的位置
F2
ABCDEF
1ProductCategoryPriceLook forPosition
2AppleFruit$1.20Bread4
3PearFruit$1.50
4CarrotVegetable$0.80
5BreadBakery$2.40
6MilkDairy$1.10
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

Bread 是 A2:A6 中的第四个单元格,所以 F2 显示 4。计数从区域的第一个单元格开始,而不是从工作表的第 1 行开始:把区域改成 A1:A6,答案就变成 5。在 E2 中输入 Kiwi,MATCH 会返回 #N/A。

MATCH 语法和匹配类型

=MATCH(lookup_value, lookup_array, [match_type])
match_type查找的内容列表要求
0第一个与 lookup_value 完全相等的值。文本可以使用通配符。顺序不限
1 或省略小于或等于 lookup_value 的最大值。按升序排列
-1大于或等于 lookup_value 的最小值。按降序排列

默认值是 1,不是 0。在未排序的姓名列表上使用省略了第三个参数的 MATCH,它不会报错,而是返回一个可能属于另一行的位置。查找文本、编码或 ID 时,每次都要写上 0。

近似匹配:值落在哪个区间

匹配类型为 1 时,MATCH 回答的是“在哪个区间”:返回该值已达到的最后一个门槛的位置。这里 75 分已经超过了 0、60 和 70,所以落在第 3 个区间,等级为 C。

分数所在的区间
E2
ABCDEF
1Min scoreGradeScoreBandGrade
20F753C
360D591F
470C905A
580B1005A
690A
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

59 仍低于 60,所以落在第 1 个区间(F)。90 与最后一个门槛完全相等,100 高于它,所以两者都落在第 5 个区间(A)。门槛必须保持升序排列:正是这一点让 MATCH 能停在正确的位置。

匹配类型 -1 与之相反,用于从大到小排序的列表。它返回仍大于或等于查找值的最小值的位置:某一列中的尺寸为 {50;25;12;5} 时,=MATCH(18,D2:D5,-1) 返回 2,即 25 这个尺寸,它是能装下 18 的最小尺寸。

通配符和大小写

MATCH 不区分大小写,匹配类型为 0 时可以使用通配符 *(任意多个字符)和 ?(恰好一个字符)。要区分大小写,就用 EXACT 比较整个列表,再查找第一个 TRUE。

匹配文本的三种方法
E1
ABCDE
1ProductCategoryPriceStarts with "C"3
2AppleFruit$1.20Lower case "milk"5
3PearFruit$1.50Exactly "milk"#N/A
4CarrotVegetable$0.80
5BreadBakery$2.40
6MilkDairy$1.10
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

"C*" 匹配 Carrot,位置为 3。"milk" 在位置 5 找到 Milk,因为大小写被忽略了。EXACT 写法逐个区分大小写地把名称与“milk”比较,找不到 TRUE,于是返回 #N/A。把 A6 改成 milk,它就返回 5。在 Excel 2019 及更早版本中,EXACT 公式要按 Ctrl+Shift+Enter(Mac 上按 Cmd+Shift+Enter)确认;在 Excel 2021 和 Microsoft 365 中按 Enter 就够了。波浪号可以让通配符按字面匹配:"~*" 查找的是真正的星号。

检查值是否在列表中

MATCH 找到值时返回数字,找不到时返回 #N/A。ISNUMBER 把它变成 TRUE 或 FALSE,这就是一个快速的“是否在列表中”的判断。

订购的商品哪些有库存?
B2
ABCD
1OrderedIn stock?In stock
2PearYesApple
3KiwiNoPear
4MilkYesBread
5PlumNoMilk
6BreadYes
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

Pear、Milk 和 Bread 在 D2:D5 中,所以显示 Yes。Kiwi 和 Plum 显示 No。COUNTIF($D$2:$D$5,A2)>0 给出同样的答案;MATCH 找到第一个就停止,COUNTIF 则会全部数一遍。

MATCH、XMATCH 和 INDEX

MATCH 是经典查找公式 =INDEX(C2:C6,MATCH(E2,A2:A6,0)) 的一半,详见 INDEX 和 MATCH 页面。Excel 2021 和 Microsoft 365 新增了 XMATCH,它默认精确匹配,可以从最后一项往前查找,不用降序排序也能处理“下一个更大值”。MATCH 仍然到处都能用,包括必须在 Excel 2019 中打开的文件。

练习:员工的位置

团队名单
F2
ABCDEF
1NameTeamStart yearNamePosition
2AnaSales2019Dev
3BenSupport2021
4CaraSales2018
5DevFinance2022
6EliSupport2020
7FayFinance2023
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 在 F2 中返回 E2 中的姓名在 A 列列表中的位置。

常见问题

Excel 中的 MATCH 返回什么?

返回位置而不是值:当 Bread 是 A2:A6 中的第四个单元格时,=MATCH("Bread",A2:A6,0) 返回 4。把它和 INDEX 搭配,就能从另一列取出该位置上的值。

匹配类型 0、1 和 -1 有什么区别?

0 查找精确匹配,列表顺序不限。1(默认值)查找小于或等于查找值的最大值,要求列表按升序排列。-1 查找大于或等于查找值的最小值,要求列表按降序排列。

MATCH 区分大小写吗?

不区分。=MATCH("milk",A2:A6,0) 能找到 Milk。要区分大小写,用 =MATCH(TRUE,EXACT(A2:A6,"milk"),0),在 Excel 2019 及更早版本中需要按 Ctrl+Shift+Enter(Mac 上按 Cmd+Shift+Enter)。

怎样用 MATCH 检查一个值是否在列表中?

值不存在时 MATCH 返回 #N/A,所以判断它是否返回了数字即可:=ISNUMBER(MATCH(A2,$D$2:$D$5,0)) 给出 TRUE 或 FALSE。再用 IF 包住它,就能显示你自己的文本。

Coddy 编程语言插图

和 Coddy 一起学编程

开始