excel里用 index+match 做动态查找,分工特别清楚:match 负责定位到符合条件的第几行,index 负责从这行里取出对应列的值。它比单用 vlookup 灵活很多,不用把查找列放在最左侧,返回列也能按需调整,特别适合商品表、库存表、报价表这类经常增删字段的数据表。
最基础的常用写法是:=INDEX(返回区域, MATCH(查找值, 查找区域, 0))。如果要按多个条件查找,直接把多个判断条件相乘就行,所有条件都完全满足的那一行会返回 1,再用 MATCH 找到这个 1 的位置就可以。

第一步:整理源数据和查询条件
先把源数据整理成连续的表格,每一列都设置清晰的表头。示例里左侧是零件编号、外形、尺寸、售价,右侧输入要查询的零件编号、外形和尺寸,目标是返回对应售价。
做 INDEX+MATCH 时,建议把查找条件单独放在固定单元格里,比如示例里的 F2、G2、H2。之后要换查询内容直接改查询区就行,不用反复修改公式。

第二步:用 MATCH 找到符合条件的行号
多条件匹配的核心逻辑就在这里:MATCH(1,(零件编号=F2)*(外形=G2)*(尺寸=H2),0)。每个条件判断后都会产生 TRUE 或 FALSE,三个条件相乘后,只有全部满足的行才会变成 1。
MATCH 的第一个参数写 1,意思就是在这组结果里找第一个 1;第三个参数写 0,表示精确匹配。行号定位准确了,INDEX 才知道该去源数据里的哪一行取值。

第三步:用 INDEX 返回对应列的内容
等 MATCH 找对行号后,INDEX 就能从返回区域里取出对应的值。完整公式可以写成:=IFERROR(INDEX(售价列,MATCH(1,(零件编号列=F2)*(外形列=G2)*(尺寸列=H2),0)),"无此零件")。
外层加 IFERROR 是为了处理查不到结果的情况。没有匹配行时,公式不会直接显示乱码似的错误值,而是返回“无此零件”这类提示,给别人传阅表格时看着也更清楚。

第四步:复制公式前锁定查找区域
如果公式要向下批量复制,查找区域和返回区域要用绝对引用锁住,比如 $A$2:$A$20、$D$2:$D$20。查询条件所在单元格则根据复制方向决定是否锁列或锁行。
复制完重点检查两件事:返回区域是否仍然指向正确的列,MATCH 的查找区域有没有被拖拽偏。只要区域锁定正确,换任意查询条件,结果就会自动更新,这也是 INDEX+MATCH 动态查找最实用的地方。


















