Excel 函数——LOOKUP、VLOOKUP、HLOOKUP、XLOOKUP
源表格
所有案例都是基于此表格进行演示,表格用单元格表示为 A1:D9:
| 序号 | 员工姓名 | 部门 | 职务 |
|---|---|---|---|
| 1 | 苏霞 | 法务部 | 法律顾问 |
| 2 | 包志林 | 财务部 | 财务总监 |
| 3 | 林娥云 | 安监部 | 部长 |
| 4 | 石少卿 | 质检部 | 质检员 |
| 5 | 于炳福 | 生产部 | 生产部 |
| 6 | 蒋琼志 | 仓储部 | 保管员 |
| 7 | 刘龙飞 | 供应部 | 发货员 |
| 8 | 毕晓智 | 采购部 | 部长 |
LOOKUP
LOOKUP(lookup_value, lookup_vector, [result_vector])
参数讲解
- lookup_value:单元格、数字、字符。
- lookup_vector:必须提供包含 lookup_value 的列或行。
- result_vector:除 lookup_vector 之外的列或行,查找的结果在此中。
实际案例
题目:查找序号 3 对应的员工姓名?
列函数,LOOKUP(3, A1:A9, B1:B9),查询结果为林娥云。
lookup_value 输入数字 3,也就是序号一列中的 3,所以 lookup_vector 为 A1:A9。最终结果是查询员工姓名一列,所以 result_vector 为 B1:B9。
VLOOKUP 和 HLOOKUP
VLOOKUP 和 HLOOKUP 查找的方向不同。V 代表 Vertical,垂直方向;H 代表 Horizontal,水平方向。
下面的表格是用于保存函数返回之后的结果的存储表格,下文称之为存储表,存储表的位置为 A10:D15 :
| 序号 | 员工姓名 | 部门 | 职务 |
|---|---|---|---|
| 1 | |||
| 5 | |||
| 6 | |||
| 8 |
理解图
上图为 VLOOKUP 的查询方式。col_index_num 指定表格中第 3 列(部门),由于 VLOOKUP 是垂直方向查询的,所以用深色来表示。浅色表示的是 lookup_value,它可以是表格中任意一个单元格,图中是序号列中的第 4 个。
上图为 HLOOKUP 的查询方式。row_index_num 指定表格中第 5 行(序号 4 所在行),由于 HLOOKUP 是水平方向查询的,所以用深色来表示。浅色表示的是 lookup_value,它是表格中第一个单元格(首行),图中是部门列。
VLOOKUP
VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
参数讲解
- lookup_value:单元格、数字、字符。
- table_array:在哪里查询,也就是源表格。
- col_index_num:结果在源表格中的第几列。
- range_lookup:一个逻辑值,该值指定希望 VLOOKUP 查找近似匹配(TRUE或不填)还是精确匹配(FALSE)。
实际案例
题目:填充存储表中的信息。
简单示范
列函数,VLOOKUP(A10, A1:A9, 2, TRUE),查询结果为林娥云。
A11 是填充表格序号 3,A1:A9 是源表格。
通过序号查找,所以 lookup_value 为 3。table_array 是 A1:A9(源表格)。查询的结果希望在源表格中的第二列中,也就是 员工姓名 这一列中,所以 col_index_num 为 2。
完整示范
| 序号 | 员工姓名 | 部门 | 职务 |
|---|---|---|---|
| 1 | =VLOOKUP(\(A11,\)A\(1:\)D$9,2,TRUE) | =VLOOKUP(A11,$A\(1:\)D$9,3,TRUE) | =VLOOKUP(A11,$A\(1:\)D$9,4,TRUE) |
| 5 | =VLOOKUP(\(A12,\)A\(1:\)D$9,2,TRUE) | =VLOOKUP(A12,$A\(1:\)D$9,3,TRUE) | =VLOOKUP(A12,$A\(1:\)D$9,4,TRUE) |
| 6 | =VLOOKUP(\(A13,\)A\(1:\)D$9,2,TRUE) | =VLOOKUP(A13,$A\(1:\)D$9,3,TRUE) | =VLOOKUP(A13,$A\(1:\)D$9,4,TRUE) |
| 8 | =VLOOKUP(\(A14,\)A\(1:\)D$9,2,TRUE) | =VLOOKUP(A14,$A\(1:\)D$9,3,TRUE) | =VLOOKUP(A14,$A\(1:\)D$9,4,TRUE) |
每一行不同列的函数的第一个参数(lookup_value)是不变的,因为是查询序号 1 的信息。只有第三个参数(col_index_num)发生了变化,对于序号 1 的不同列,比如员工姓名在源表格中是第二列,所以为 2,以此类推。
现在,来观察共同的地方,第二个参数(table_array)没有发生任何变化,是一个固定值,其中在字母和行号之前都加了符号$代表绝对引用。
关于函数单元格引用方式,。
HLOOKUP
HLOOKUP(lookup_value, table_array, row_index_num, [range_lookup])
参数讲解
- lookup_value:这里的查找值必须是表格中的第一行,也就是首行。
- table_array:在哪里查询,也就是源表格。
- row_index_num:结果在源表格中的第几行。
- range_lookup:一个逻辑值,该值指定希望 VLOOKUP 查找近似匹配(TRUE或不填)还是精确匹配(FALSE)。
实际案例
题目:填充存储表中的信息。
简单示范
列函数,HLOOKUP(B2, A1:D9, 4, TRUE),查询结果为林娥云。
lookup_value 必须为表格中的首行(可以是源表格,可以使用于提取数据的表格)B2 为源表格的第二列首行,A1:D9 为源表格,查询的是第四行的信息,因此 row_index_num 为 4。
完整示范
| 序号 | 员工姓名 | 部门 | 职务 |
|---|---|---|---|
| 1 | =HLOOKUP($B\(1,\)A\(1:\)D$9,A11+1) | =HLOOKUP($C\(1,\)A\(1:\)D$9,A11+1,FALSE) | =HLOOKUP($D\(1,\)A\(1:\)D$9,A11+1) |
| 5 | =HLOOKUP($B\(1,\)A\(1:\)D$9,A12+1) | =HLOOKUP($C\(1,\)A\(1:\)D$9,A12+1,FALSE) | =HLOOKUP($D\(1,\)A\(1:\)D$9,A12+1) |
| 6 | =HLOOKUP($B\(1,\)A\(1:\)D$9,A13+1) | =HLOOKUP($C\(1,\)A\(1:\)D$9,A13+1,FALSE) | =HLOOKUP($D\(1,\)A\(1:\)D$9,A13+1) |
| 8 | =HLOOKUP($B\(1,\)A\(1:\)D$9,A14+1) | =HLOOKUP($C\(1,\)A\(1:\)D$9,A14+1,FALSE) | =HLOOKUP($D\(1,\)A\(1:\)D$9,A14+1) |
第一个参数填写表格的首行(这里填写的是源表格的首行),row_index_num 填写的是源表格内第几行开始查询。根据VLOOKUP 和 HLOOKUP 查询方式的理解图理解,水平方向,部门和职务列中都有法字,因此需要开启精准查询,否则提示#N/A。