MATCH函数在Excel和WPS表格中的核心作用是返回查找值在指定区域中的相对位置,结果是一个数字而非值本身。 比如查找"张三"在A1:A100中排第几行,MATCH返回的就是行号数字。它通常不单独使用,而是与INDEX函数组合——INDEX负责"拿值",MATCH负责"找位置",两者配合实现比VLOOKUP更灵活的查找。很多用户第一次接触MATCH时会困惑:"它和VLOOKUP有什么不同?""为什么我的MATCH返回#N/A?""第三个参数到底填什么?"这篇教程从语法拆解开始,用实际示例说明每个参数的填法和常见报错的解决方式。
MATCH函数的完整语法是:=MATCH(lookup_value, lookup_array, [match_type])
在WPS表格中语法与Excel完全一致,基础场景下公式可直接复用。

这是MATCH函数最高频的错误来源。三个值的含义差异很大:
| match_type | 匹配方式 | 数据排序要求 | 典型用法 |
|---|---|---|---|
| 0 | 精确匹配,找不到就返回#N/A | 不需要排序 | 查找具体姓名、编号、ID——最常用 |
| 1 | 小于等于查找值的最大值 | 数据必须升序排列 | 按分数段查找等级、按金额查费率 |
| -1 | 大于等于查找值的最小值 | 数据必须降序排列 | 较少使用,按阈值向下匹配 |
绝大多数场景直接用0。 如果不填第三个参数,MATCH默认行为是1(近似匹配),且数据需要升序——这与VLOOKUP默认模糊匹配的逻辑相同,但被忽略的频率更高。当你的数据没有排序时,省略第三参数或用1都会导致意外结果。
假设A1:A5存放了五个姓名:张三、李四、王五、赵六、钱七。查找"王五"在第几行:
=MATCH("王五", A1:A5, 0)关键理解:MATCH返回的是查找区域内的相对位置,不是工作表的绝对行号。如果查找区域是A10:A20,"王五"在A12,MATCH返回3(第3个位置),而不是12。
MATCH单独使用时只返回位置数字,实际工作中通常和INDEX搭配:=INDEX(返回区域, MATCH(查找值, 查找列, 0))
为什么这个组合比VLOOKUP更好用:
示例:A列为姓名,B列为部门,C列为工资。用姓名查工资——=INDEX(C1:C100, MATCH("张三", A1:A100, 0))。不管C列在A列的右边第几列,公式都正确。
最常见的原因三个:查找值在区域中确实不存在(检查是否有空格或不可见字符);查找值是数字但区域中存的是文本格式的数字(用VALUE函数转换);match_type设为0但数据有不可见差异。
排查步骤:将查找值和区域中的一个"看起来一样"的值做=A=B比较——如果返回FALSE,说明看似相同实际不同。
MATCH的第二个参数必须是单行或单列。如果选了A1:C10(多列区域),返回#VALUE!。解决方法:将查找区域缩小为单列,如A1:A10。
如果第三个参数省略了或填了1,但数据没有升序排列——MATCH返回的"近似匹配"结果可能与预期完全不符。检查方法:给数据排个序,看结果是否变正确了。如果变了,说明应该用0(精确匹配)。
核心区别在于功能定位——MATCH只找位置,VLOOKUP直接返回值:
语法和基础行为完全一致。在WPS表格中输入的MATCH公式可以直接复制到Excel中使用,反之亦然。
可以。在lookup_array参数中引用其他工作表的数据区域即可,如=MATCH(A1, Sheet2!B1:B100, 0)。
用两个MATCH嵌套:一个找行位置、一个找列位置,外面用INDEX取交叉点的值。=INDEX(A1:E100, MATCH("行标签", A1:A100, 0), MATCH("列标签", A1:E1, 0))
MATCH函数的作用是"找位置"而非"取值"——它返回查找值在单行或单列区域中的相对位置。日常使用中最需要注意两点:第三个参数优先用0(精确匹配),以及不要给第二个参数填多行多列区域。当需要灵活查找时,INDEX+MATCH组合是比VLOOKUP更稳的选择——不受列顺序限制且在表格结构变化时不容易出错。