VLOOKUP 函数¶
1. 函数概述¶
VLOOKUP(Vertical Lookup,纵向查找)用于在表格的第一列中查找指定值,并返回该行中指定列的对应结果。它最常见的用途是:用一个“键”(如员工编号、商品编码、订单号)去“查表”,取回姓名、价格、部门等信息。
典型场景包括:
- 按“商品编码”匹配“商品名称/单价”
- 按“员工工号”匹配“部门/入职日期”
- 将两张表按共同字段进行数据补全(类似“左连接”效果)
2. 基础语法¶
3. 参数说明¶
| 参数 | 是否必填 | 含义 | 说明要点 |
|---|---|---|---|
lookup_value |
是 | 查找值 | 你要在表格第一列里寻找的内容(可为单元格或固定值) |
table_array |
是 | 查找区域 | 包含“查找列 + 返回列”的整个区域;查找发生在该区域的第一列 |
col_index_num |
是 | 返回列序号 | 返回 table_array 中第几列的数据(从 1 开始计数) |
[range_lookup] |
否 | 匹配方式 | FALSE(精确匹配)或 TRUE(近似匹配);省略通常等同于 TRUE |
常用建议:用于编码/ID 这类精确对应关系时,通常使用
FALSE(精确匹配)。
4. 基础用法示范¶
下面用一个简单示例来展示 VLOOKUP 的典型写法。假设有“商品表”和“订单表”:
-
商品表(A:D)
- A列:商品编码
- B列:商品名称
- C列:单价
- D列:分类
-
订单表需要根据“商品编码”自动带出名称和单价。
4.1 精确匹配:按编码查商品名称¶
在订单表中,假设:
E2是商品编码- 商品表范围是
A2:D100 - 要返回商品名称(在商品表的第 2 列)
解释:
- 在
$A$2:$D$100的第一列(A列)查找E2 - 找到后返回同一行第 2 列(B列:商品名称)
FALSE表示精确匹配
4.2 精确匹配:按编码查单价¶
单价在商品表的第 3 列(C列):
4.3 结合计算:查到单价后计算金额¶
假设订单数量在 F2,金额在 G2:
4.4 近似匹配:按分数区间返回等级¶
近似匹配常用于“区间映射”,例如按分数返回等级:
| 分数下限 | 等级 |
|---|---|
| 0 | D |
| 60 | C |
| 75 | B |
| 90 | A |
假设该表在 J2:K5,分数在 H2,则:
说明要点:
TRUE是近似匹配,会在第一列中找“不大于 lookup_value 的最大值”对应的行- 用近似匹配时,第一列通常需要按升序排列,以保证结果符合预期
4.5 固定查找区域:使用绝对引用¶
当你向下填充公式时,查找区域通常应固定:
- 使用
$A$2:$D$100这种绝对引用 - 或按需固定行/列(如
$A2:$D100)
4.6 在多列中定位:动态计算返回列序号¶
当返回列不固定(比如根据表头选择要返回“单价/分类/名称”),可以让 col_index_num 动态变化,例如用 MATCH 找列号(这里仅展示思路):
5. 总结¶
- VLOOKUP 的核心逻辑:在
table_array的第一列按lookup_value查找,找到后返回同一行的第col_index_num列结果。 - 绝大多数“编码/ID 查表补全”场景,推荐使用
FALSE精确匹配。 - 近似匹配
TRUE更适合做“分段区间映射”(分数等级、税率区间、运费区间等)。 - 为了便于复制填充,
table_array常用绝对引用固定区域。 - 当你的数据结构经常变动或需要更灵活查找时,也可以考虑更现代的替代方案(如 XLOOKUP 或 INDEX+MATCH),但在大量历史表格与通用场景里,VLOOKUP 仍然非常常用。