你可以使用 MATCH 和 INDEX 来创建比 VLOOKUP更灵活的查找公式。这种组合通常被称为索引匹配。
以下示例演示如何使用此销售数据表来调用 INDEX-MATCH 函数:
| A | B | C | D | |
|---|---|---|---|---|
| 1 | 姓名 | 地区 | 销售 | 委员会 |
| 2 | 爱丽丝 | 北 | 5000 | 500 |
| 3 | 鲍勃 | 南 | 6000 | 600 |
| 4 | 查理 | 东方 | 4500 | 450 |
| 5 | 达乌德 | 西方 | 5500 | 550 |
| 6 | 前夕 | 北 | 4800 | 480 |
现在,假设你想根据销售人员的姓名查找他们的佣金。以下是 INDEX-MATCH 和 VLOOKUP 函数的等效公式:
- INDEX-MATCH:
=INDEX(D2:D6,MATCH("Bob",A2:A6,0))
- VLOOKUP:
=VLOOKUP("鲍勃",A2:D6,4,FALSE)
这两个公式都会返回 600,这是鲍勃的佣金。
以下是 INDEX-MATCH 函数更灵活的原因:
- 列独立性: 使用 VLOOKUP 函数时,包含返回值(佣金)的列必须始终位于查找列(名称)的右侧,并且您需要计算列数以指定哪一列包含所需的数据(本例中为 4 列)。
使用 INDEX-MATCH,返回列可以位于表中的任何位置。如果重新排列列,使“佣金”位于 B 列,则可以轻松调整 INDEX-MATCH 公式(将D2:D6替换为B2:B6)。=INDEX(B2:B6,MATCH("Bob",A2:A6,0))
在这种情况下,VLOOKUP 公式将失效。 - 左侧查找: VLOOKUP 只能查找范围最左侧列中的值。如果你想根据佣金值查找姓名,就不能使用 VLOOKUP 函数。但是,INDEX-MATCH 函数允许您使用任何列:
=INDEX(A2:A6,MATCH(600,D2:D6,0))
这将返回“Bob”。 - 性能:对于大型数据集,INDEX-MATCH 比 VLOOKUP更高效,尤其是在对同一表进行多次查找时。