跳转到内容
新建笔记

Excel:INDEX 与 MATCH 组合查找

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。