MATCH 返回目标在一行或一列中的相对位置,INDEX 根据位置返回另一区域的值。组合后可以向左查找,也能分别控制查找区域与返回区域。
基本语法
跳转到“基本语法”INDEX(array, row_num, [column_num])MATCH(lookup_value, lookup_array, [match_type])MATCH 的匹配类型:
match_type | 行为 | 数据要求 |
|---|---|---|
0 | 精确匹配 | 不要求排序,日常查找优先使用 |
1 或省略 | 小于等于查找值的最大值 | 查找区域升序排列 |
-1 | 大于等于查找值的最小值 | 查找区域降序排列 |
省略第三个参数不是精确匹配,这是最常见的错误之一。
常用组合
跳转到“常用组合”假设 A 列是产品代码,B 列是产品名,C 列是价格:
=INDEX(C2:C1000, MATCH(E2, A2:A1000, 0))先在 A2:A1000 中找到 E2,再从 C2:C1000 的相同相对位置返回价格。
反向查找不要求返回列位于查找列右侧:
=INDEX(A2:A1000, MATCH(E2, C2:C1000, 0))跨工作表:
=INDEX(Sheet2!B2:B1000, MATCH(A2, Sheet2!A2:A1000, 0))部分文本匹配可使用通配符:
=INDEX(B2:B1000, MATCH("*"&E2&"*", A2:A1000, 0))多条件查找
跳转到“多条件查找”Microsoft 365 等支持动态数组的版本可直接输入:
=INDEX(C2:C1000, MATCH(1, (A2:A1000=E2)*(B2:B1000=F2), 0))旧版 Excel 可能需要 Ctrl+Shift+Enter。大表中优先使用辅助列、表格结构化引用或 XLOOKUP / FILTER,避免整列数组计算。
错误处理
跳转到“错误处理”=IFERROR(INDEX(C2:C1000, MATCH(E2, A2:A1000, 0)), "未找到")| 错误 | 常见原因 |
|---|---|
#N/A | 查找值不存在、空格或数据类型不一致 |
#REF! | INDEX 区域与 MATCH 返回位置不兼容 |
#VALUE! | 数组尺寸不一致或旧版数组公式输入方式不正确 |
查找区域和返回区域应从同一行开始、包含相同数量的单元格。优先限定实际数据范围,不要在大型工作簿中使用整列数组公式。
来源:CSDN 原文,首次发布于 2025-09-04。