jakup
① 要查找的商品编码
ABC
1商品名称商品编码价格
2无线鼠标A10125,000 韩元
3机械键盘A10289,000 韩元
4USB-C 集线器A10342,000 韩元
527 英寸显示器A104320,000 韩元
6笔记本支架A10538,000 韩元
7FHD 摄像头A10655,000 韩元
8蓝牙音箱A10767,000 韩元
i选择商品编码后点击“执行查找”。
MATCH 查找中(B 列)找到位置INDEX 返回
=INDEX($A$2:$A$8, MATCH("A104", $B$2:$B$8, 0))

💡 只改商品编码,名称就会自动更新。与 VLOOKUP 不同,它能返回查找列左侧的列。

商品名称

INDEX/MATCH 这样理解

MATCH 找出值的位置(N),INDEX 返回该位置的值。与 VLOOKUP 不同,它也能返回左侧的列。

MATCHMATCH(编码, B 列, 0) — 在编码列中求出要找的值的位置(行号)。末尾的 0 表示精确匹配。
INDEXINDEX(A 列, 位置) — 用 MATCH 求出的位置,返回商品名称列的那个值。
?为什么用 INDEX/MATCH? — VLOOKUP 只能在最左列查找,而 INDEX/MATCH 可自由选择查找列和返回列(包括左侧)。

用 IFERROR 包起来后,不存在的编码会显示“无此编码”而不是 #N/A。

为什么用 INDEX/MATCH 而不是 VLOOKUP

INDEX/MATCH 的结果与 VLOOKUP 相同,但适用场景更广。MATCH 先找出值的位置(在第几行),INDEX 再取回该位置的值。因为是两步,查找列和取值列可以自由指定。

也就是说,要取回的值在查找值左边也没关系。VLOOKUP 结构上做不到这一点,只能调整列顺序或加一列辅助列;用 INDEX/MATCH 则不需要。

表格用得越久,差距越明显。VLOOKUP 用列序号指定取值列,中间插入一列就会开始返回错误数据;INDEX/MATCH 指向列本身,照常工作。刚开始看着长一点,但后续维护更省心。