Excel MATCH 函数
最后修改于 2025 年 4 月 4 日
MATCH 函数在单元格区域中搜索指定项,并返回其相对位置。这个强大的查找函数经常与 INDEX 结合使用,以实现高级查找。本教程涵盖 MATCH 的语法、匹配类型、实际示例和常见用法。
MATCH 函数基础
MATCH 在区域中定位查找值的位置。与 VLOOKUP 不同,它返回的是位置而不是值本身。这使其在动态查找方面更加灵活。
| 组成部分 | 描述 |
|---|---|
| 函数名称 | MATCH |
| 语法 | =MATCH(lookup_value, lookup_array, [match_type]) |
| 参数 | lookup_value (必需), lookup_array (必需), match_type (可选) |
| 返回值 | 匹配在 lookup_array 中的位置 |
此表概述了 MATCH 函数的组成部分。match_type 参数控制 MATCH 是查找精确匹配还是近似匹配。
精确匹配 (0)
将 match_type 设置为 0 会强制进行精确匹配。这是 MATCH 最常见的用法,其工作方式类似于 VLOOKUP 的精确匹配。
| A | B |
|---|---|
| Apple | |
| Banana | |
| Cherry | |
| Date | |
| =MATCH("Banana",A1:A4,0) |
此表演示了在水果列表中搜索“Banana”的精确匹配。结果将是 2,因为 Banana 是该区域中的第二个项目。
=MATCH("Cherry",A1:A4,0) // Returns 3
=MATCH("Grape",A1:A4,0) // Returns #N/A (not found)
=MATCH("banana",A1:A4,0) // Returns #N/A (case-sensitive)
精确匹配需要值完全相同(文本区分大小写)。如果值可能不存在于查找区域中,请使用 IFERROR 来处理 #N/A 错误。
近似匹配 (1)
Match_type 1 查找小于或等于查找值的最大值。查找区域必须按升序排序。
| A | B |
|---|---|
| 10 | |
| 20 | |
| 30 | |
| 40 | |
| =MATCH(25,A1:A4,1) |
此表显示了在排序列表中对 25 进行近似匹配。结果是 2,因为 20 是 ≤ 25 的最大值。
=MATCH(35,A1:A4,1) // Returns 3 (30 ≤ 35) =MATCH(5,A1:A4,1) // Returns #N/A (below first value) =MATCH(100,A1:A4,1) // Returns 4 (40 ≤ 100)
近似匹配对于成绩等级、税率等级和其他基于范围的查找很有用。为获得正确结果,请务必按升序排序数据。
反向近似匹配 (-1)
Match_type -1 查找大于或等于查找值的最小值。查找区域必须按降序排序。
| A | B |
|---|---|
| 40 | |
| 30 | |
| 20 | |
| 10 | |
| =MATCH(25,A1:A4,-1) |
此表显示了在降序列表中对 25 进行反向近似匹配。结果是 3,因为 20 是 ≥ 25 的最小值。
=MATCH(35,A1:A4,-1) // Returns 2 (30 ≥ 35) =MATCH(5,A1:A4,-1) // Returns 4 (10 ≥ 5) =MATCH(100,A1:A4,-1) // Returns #N/A (above first value)
反向匹配不太常见,但在某些金融计算和反向排序的数据集中有用。请记住,其排序要求与 match_type 1 不同。
MATCH 与通配符
在精确匹配 (0) 中,MATCH 支持通配符 (*, ?, ~) 进行部分文本匹配。这使得文本搜索更加灵活。
| A | B |
|---|---|
| Apple | |
| Banana | |
| Cherry | |
| Date | |
| =MATCH("B*",A1:A4,0) |
此表演示了以“B”开头的文本的通配符搜索。结果是 2(Banana)。通配符仅适用于文本值。
=MATCH("*rry",A1:A4,0) // Returns 3 (Cherry)
=MATCH("?ate",A1:A4,0) // Returns 4 (Date)
=MATCH("~*",A1:A4,0) // Searches for literal *
星号 (*) 匹配任何字符序列,问号 (?) 匹配任何单个字符。使用波浪号 (~) 来转义通配符。
INDEX-MATCH 组合
MATCH 通常与 INDEX 配对使用,以创建比 VLOOKUP 更灵活的查找。这种组合可以向左查找并处理动态列引用。
| A | B | C |
|---|---|---|
| Apple | Red | |
| Banana | Yellow | |
| Cherry | Red | |
| =INDEX(B1:B3,MATCH("Banana",A1:A3,0)) |
此表显示 INDEX-MATCH 查找“Banana”的颜色。MATCH 定位行(2),INDEX 返回 B 列(“Yellow”)中的相应颜色。
=INDEX(B1:B10,MATCH(D1,A1:A10,0)) // Basic lookup =INDEX(A1:Z100,MATCH(D1,A1:A100,0),MATCH(E1,A1:Z1,0)) // 2-way lookup =INDEX(B1:B10,MATCH(1,(A1:A10=D1)*(C1:C10=D2),0)) // Multi-criteria
INDEX-MATCH 比 VLOOKUP 更灵活,因为它可以在工作表的左侧、右侧或任何位置查找。最后一个示例显示了多条件数组公式语法(在旧版 Excel 中按 Ctrl+Shift+Enter 输入)。
MATCH 与动态范围
MATCH 与动态命名范围和表格配合得很好。此示例使用 MATCH 查找列中的最后一个非空单元格。
| A | B |
|---|---|
| Data1 | |
| Data2 | |
| Data3 | |
| =MATCH(REPT("z",255),A:A) |
此表演示了在 A 列中查找最后一个文本条目。该公式返回 3,即“Data3”的位置。REPT 创建了一个保证比任何实际数据“更大”的文本值。
=MATCH(9.9E+307,A:A) // Last number in column =MATCH(2,1/(A1:A100<>"")) // Last non-empty (array formula) =MATCH(TRUE,INDEX(ISBLANK(A:A),0),0)-1 // Last non-blank
这些技术有助于创建动态范围,这些范围会随着数据的更改而自动调整。第二个示例是一个数组公式,无论数据类型如何,它都能找到最后一个非空单元格。
常见错误及解决方案
MATCH 可能由于多种原因返回错误。此表解释了常见问题及其解决方案。
| 错误 | 原因 | 解决方案 |
|---|---|---|
| #N/A | 未找到值 | 使用 IFERROR 或检查数据 |
| #VALUE! | 无效的 match_type | 使用 0、1 或 -1 |
| 结果不正确 | 数据未排序 | 为近似匹配排序 |
| 使用通配符时 #N/A | 查找区域中的数字 | 将数字转换为文本 |
此故障排除表有助于诊断 MATCH 函数问题。大多数问题源于未排序的数据、不正确的匹配类型或查找值与查找区域之间的类型不匹配。
MATCH 与其他查找函数的对比
与其他查找函数相比,MATCH 具有独特的优势。此表比较了它们的特性。
| 函数 | 返回值 | 灵活性 | 最佳用途 |
|---|---|---|---|
| MATCH | 位置 | 高(可与 INDEX 配合使用) | 动态列引用 |
| VLOOKUP | 值 | 中等 | 简单的垂直查找 |
| HLOOKUP | 值 | 中等 | 水平查找 |
| XLOOKUP | 值 | 高 | 现代 Excel 版本 |
此比较显示了 MATCH 作为位置查找函数的独特地位。虽然像 XLOOKUP 这样的新函数提供了类似的灵活性,但 MATCH 在复杂场景和与旧版 Excel 的兼容性方面仍然至关重要。
MATCH 函数是 Excel 中查找数据位置的通用工具。无论单独使用还是与 INDEX 结合使用,它都能实现强大、动态的查找。掌握 MATCH 可以开启超越基本查找函数的高级数据分析的可能性。
作者
列出 所有 Excel 教程。