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