Excel VLOOKUP 与 HLOOKUP 函数 #

函数概览 #

VLOOKUP 和 HLOOKUP 是 Excel 中最常用的查找函数,用于在表格中查找数据。

text
┌─────────────────────────────────────────────────────────────┐
│                    查找函数一览                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  VLOOKUP   垂直查找    =VLOOKUP(值, 范围, 列号, 精确/模糊)   │
│  HLOOKUP   水平查找    =HLOOKUP(值, 范围, 行号, 精确/模糊)   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

VLOOKUP 函数 #

语法 #

excel
=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])

参数:
- lookup_value: 要查找的值
- table_array: 查找范围(查找值必须在第一列)
- col_index_num: 返回值所在列号(从1开始)
- range_lookup: 查找方式
  - FALSE 或 0:精确匹配
  - TRUE 或 1 或省略:模糊匹配(要求第一列升序排列)

基本用法 #

excel
=VLOOKUP(A1, B:D, 3, FALSE)    在B列查找A1,返回D列的值
=VLOOKUP("张三", A:C, 2, 0)    在A列查找"张三",返回B列的值
=VLOOKUP(A1, 表格, 2, FALSE)   精确匹配
=VLOOKUP(A1, 表格, 2, TRUE)    模糊匹配

查找示意图 #

text
查找"李四"的电话:

    A          B          C
1   姓名       电话       地址
2   张三       138xxxx    北京
3   李四       139xxxx    上海  ← 找到
4   王五       137xxxx    广州

=VLOOKUP("李四", A:C, 2, FALSE)  → 139xxxx

查找流程:
1. 在A列查找"李四"
2. 找到第3行
3. 返回第2列(B列)的值

精确匹配 vs 模糊匹配 #

excel
精确匹配(FALSE/0):
=VLOOKUP(A1, B:D, 3, FALSE)
=VLOOKUP(A1, B:D, 3, 0)
- 必须完全匹配
- 找不到返回 #N/A
- 不要求排序

模糊匹配(TRUE/1/省略):
=VLOOKUP(A1, B:D, 3, TRUE)
=VLOOKUP(A1, B:D, 3, 1)
=VLOOKUP(A1, B:D, 3)
- 查找小于等于查找值的最大值
- 要求第一列升序排列
- 适用于区间查找

模糊匹配应用 #

text
成绩等级表(必须升序排列):
    A          B
1   分数       等级
2   0          不及格
3   60         及格
4   80         良好
5   90         优秀

=VLOOKUP(85, A:B, 2, TRUE)  → "良好"
=VLOOKUP(92, A:B, 2, TRUE)  → "优秀"
=VLOOKUP(58, A:B, 2, TRUE)  → "不及格"

实际示例 #

text
产品信息查询:
    A          B          C          D
1   产品ID     产品名     单价       库存
2   P001       产品A      100        50
3   P002       产品B      200        30
4   P003       产品C      150        80

查询产品名:
=VLOOKUP("P002", A:D, 2, FALSE)  → "产品B"

查询单价:
=VLOOKUP("P002", A:D, 3, FALSE)  → 200

查询库存:
=VLOOKUP("P002", A:D, 4, FALSE)  → 30

常见问题 #

excel
1. 返回 #N/A
   - 查找值不存在
   - 数据类型不匹配(文本 vs 数字)
   - 有隐藏空格

2. 返回错误值
   - 列号超出范围
   - 查找范围不正确

3. 返回错误结果
   - 使用了模糊匹配但未排序
   - 列号计算错误

解决常见问题 #

excel
处理 #N/A:
=IFERROR(VLOOKUP(A1, B:D, 3, FALSE), "未找到")
=IFNA(VLOOKUP(A1, B:D, 3, FALSE), "未找到")

清除空格:
=VLOOKUP(TRIM(A1), B:D, 3, FALSE)

数据类型转换:
=VLOOKUP(VALUE(A1), B:D, 3, FALSE)  文本转数字
=VLOOKUP(A1&"", B:D, 3, FALSE)      数字转文本

HLOOKUP 函数 #

语法 #

excel
=HLOOKUP(lookup_value, table_array, row_index_num, [range_lookup])

参数:
- lookup_value: 要查找的值
- table_array: 查找范围(查找值必须在第一行)
- row_index_num: 返回值所在行号(从1开始)
- range_lookup: 查找方式(同 VLOOKUP)

基本用法 #

excel
=HLOOKUP(A1, A1:D3, 2, FALSE)   在第1行查找A1,返回第2行的值

查找示意图 #

text
查找"2月"的销售额:

    A          B          C          D
1   月份       1月        2月        3月
2   销售额     5000       6000       7000
3   成本       3000       3500       4000

=HLOOKUP("2月", A1:D3, 2, FALSE)  → 6000

查找流程:
1. 在第1行查找"2月"
2. 找到第C列
3. 返回第2行的值

实际示例 #

text
月度数据查询:
    A          B          C          D
1   项目       1月        2月        3月
2   销售额     10000      12000      15000
3   成本       6000       7000       8000
4   利润       4000       5000       7000

查询2月销售额:
=HLOOKUP("2月", A1:D4, 2, FALSE)  → 12000

查询3月利润:
=HLOOKUP("3月", A1:D4, 4, FALSE)  → 7000

VLOOKUP vs HLOOKUP #

text
┌─────────────────────────────────────────────────────────────┐
│                    VLOOKUP vs HLOOKUP                        │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  VLOOKUP:                                                  │
│  - 垂直查找(按列)                                          │
│  - 查找值在第一列                                            │
│  - 返回指定列的值                                            │
│  - 适用于纵向表格                                            │
│                                                             │
│  HLOOKUP:                                                  │
│  - 水平查找(按行)                                          │
│  - 查找值在第一行                                            │
│  - 返回指定行的值                                            │
│  - 适用于横向表格                                            │
│                                                             │
└─────────────────────────────────────────────────────────────┘

函数组合应用 #

双向查找 #

excel
同时按行和列查找:

    A          B          C          D
1              1月        2月        3月
2   销售额     10000      12000      15000
3   成本       6000       7000       8000

查找"成本"在"2月"的值:
=HLOOKUP("2月", A1:D3, MATCH("成本", A:A, 0), FALSE)
→ 7000

或:
=INDEX(B2:D3, MATCH("成本", A2:A3, 0), MATCH("2月", B1:D1, 0))
→ 7000

多列查找 #

excel
返回多列数据:
=VLOOKUP($A1, $B:$D, COLUMN(A1), FALSE)

向右拖动,自动返回第1、2、3列的值

动态列号 #

excel
根据列名确定列号:
=VLOOKUP(A1, B:E, MATCH("目标列名", B1:E1, 0), FALSE)

实战案例 #

案例1:员工信息查询 #

text
员工表:
    A          B          C          D
1   工号       姓名       部门       职位
2   E001       张三       销售部     经理
3   E002       李四       技术部     工程师
4   E003       王五       财务部     会计

查询工号E002的部门:
=VLOOKUP("E002", A:D, 3, FALSE)  → "技术部"

案例2:价格查询 #

text
价格表:
    A          B          C
1   产品ID     产品名     单价
2   P001       产品A      100
3   P002       产品B      200
4   P003       产品C      150

订单表:
    A          B          C
1   产品ID     产品名     单价
2   P001       =VLOOKUP(A2, 价格表!A:C, 2, FALSE)
                          =VLOOKUP(A2, 价格表!A:C, 3, FALSE)

案例3:区间查找 #

text
税率表(必须升序排列):
    A          B
1   收入       税率
2   0          0%
3   3000       3%
4   12000      10%
5   25000      20%
6   35000      25%

计算税率:
=VLOOKUP(收入, A:B, 2, TRUE)

小结 #

VLOOKUP 和 HLOOKUP 是数据查找的核心函数:

函数 用途 示例
VLOOKUP 垂直查找 =VLOOKUP(A1, B:D, 3, FALSE)
HLOOKUP 水平查找 =HLOOKUP(A1, A1:D3, 2, FALSE)

接下来,让我们学习 INDEX 与 MATCH,掌握更灵活的查找技巧。

最后更新:2026-04-11