王剑编程网

分享专业编程知识与实战技巧

第25天:Vlookup函数使用方法(入门+进阶+高级+最高级+最新用法)

引言

Vlookup 函数是 Excel 中极为常用的查找函数,其基本语法为 Vlookup(查找的值,查找区域或数组,返回值所在的列数,精确 or 匹配查找)。它能在表格或数组的首列查找指定的值,并返回指定列的数据,在数据处理中发挥着重要作用。例如在员工信息表中,可快速查找员工的相关信息。

入门篇 - 单条件查找

在员工工资表中,我们要根据员工姓名查找其基本工资。

部门

姓名

性别

年龄

基本工资

计划部

胡苹

21

1100

计划部

江一燕

45

3600

人事部

尚雯婕

26

2700

人事部

汤加丽

25

2000

生产部

王生军

32

2600

生产部

张嘉倪

20

1200

市场部

张小三

19

900

函数应用 =VLOOKUP(G2,B:E,4,0),其中 G2 是要查找的员工姓名所在单元格,B:E 是查找区域(因为姓名在 B 列,所以从 B 列开始选区域),4 表示基本工资在查找区域的第 4 列,0 表示精确查找。

当在 G2 单元格输入要查找的姓名“江一燕”时,H2 单元格会返回其基本工资 3600,如下表所示:

部门

姓名

基本工资

计划部

江一燕

3600

在这个函数中,查找值为 G2 单元格的内容,查找区域 B:E 涵盖了可能的查找值(姓名)和要返回的结果(基本工资),返回值所在列数 4 准确指向基本工资列,精确查找 0 确保只返回完全匹配“江一燕”的基本工资。

入门篇 - 查找不到时返回空

同样是上述员工工资表,当查找不存在的员工姓名时,不想显示错误值,而是返回空。

部门

姓名

性别

年龄

基本工资

计划部

胡苹

21

1100

计划部

江一燕

45

3600

人事部

尚雯婕

26

2700

人事部

汤加丽

25

2000

生产部

王生军

32

2600

生产部

张嘉倪

20

1200

市场部

张小三

19

900

函数应用 =IFERROR(VLOOKUP(G2,B:E,4,0),"")。此公式在原 Vlookup 函数基础上,使用 IFERROR 函数将可能出现的错误值转换为空字符串。

若在 G2 单元格输入“赵志东”(表中不存在),H2 单元格将显示为空。

VLOOKUP 函数部分与单条件查找类似,IFERROR 函数的作用是当 VLOOKUP 函数返回错误值时,将其替换为空字符串,从而使表格显示更整洁。

进阶篇 - 反向查找

已知员工工资表,现在要根据员工姓名查找其所在部门,而姓名在第二列,部门在第一列,常规 Vlookup 无法直接实现,需要反向查找。

部门

姓名

性别

年龄

基本工资

计划部

胡苹

21

1100

计划部

江一燕

45

3600

人事部

尚雯婕

26

2700

函数应用 =VLOOKUP(G2,IF({1,0},B1:B8,A1:A8),2,0)。这里使用 IF({1,0}函数将 B 列(姓名)和 A 列(部门)组合,且把 B 列放在前面,使其符合 Vlookup 从首列查找的规则。

当在 G2 单元格输入“江一燕”时,H2 单元格会返回其所在部门“计划部”。

查找值依然是 G2 单元格的姓名,IF({1,0},B1:B8,A1:A8)构建了一个新的查找区域,其中 B 列在前作为新的首列用于查找,2 表示返回新区域中的第 2 列数据(即部门),0 为精确查找。

进阶篇 - 包含查找

在员工信息表中,查找名字中包含“一”的员工的基本工资。

部门

姓名

性别

年龄

计划部

胡苹

21

计划部

江一燕

45

人事部

尚雯婕

26

人事部

汤加丽

25

生产部

王生军

32

生产部

张嘉倪

20

市场部

张小三

19

函数应用 =VLOOKUP("*"&G2&"*",B:E,4,0)。通过在查找值两边连接通配符*号,实现包含特定字符的查找。

若 G2 单元格输入“江一燕”,则会返回其基本工资 3600。

查找值“*”&G2&“*”表示在 B 列中查找包含 G2 单元格内容(如“江一燕”)的单元格,B:E 为查找区域,4 是返回基本工资所在列,0 是精确查找。

进阶篇 - 区间查找

有如下销售提成表,根据产品销量查找对应的提成比例。

区间点

提成

销量

100

3%

180

300

5%


500

7%


1000

9%


函数应用 =VLOOKUP(D2,A:B,2,1)。这里最后一个参数为 1,表示匹配查找,会查找比查找值小且最接近

当 D2 单元格输入 180 时,E2 单元格会返回 3%,因为在 A 列中比 180 小且最接近的是 100,其对应的提成是 3%。

查找值为 D2 单元格的销量,A:B 是查找区域,2 表示返回 B 列(提成列)的数据,1 表示匹配查找模式。

进阶篇 - 含通配符的查找

在产品价格表中,根据产品型号查找单价,但型号中含有通配符*,直接使用 Vlookup 会出错。

型号

单价

销量

提成

A*100

900



A*900

60



A*3900

30



A*900

60



B*560

89



C*400

120



函数应用 =VLOOKUP(SUBSTITUTE(D2,"*","~*"),A:B,2,0)。先使用 SUBSTITUTE 函数将*替换为~*,再进行查找。

若 D2 单元格输入“A*900”,则会返回其单价 60。

SUBSTITUTE(D2,"*","~*")将查找值中的*转换为~*,使其能在 A 列中正确匹配,A:B 是查找区域,2 是返回单价所在列,0 是精确查找。

进阶篇 - 横向多列查找

根据员工姓名,在员工信息表中查找其性别、年龄和基本工资。

部门

姓名

性别

年龄

基本工资

计划部

胡苹

21

1100

计划部

江一燕

45

3600

人事部

尚雯婕

26

2700

人事部

汤加丽

25

2000

生产部

王生军

32

2600

生产部

张嘉倪

20

1200

市场部

张小三

19

900

函数应用 =VLOOKUP($G2,$B:$E,COLUMN(B1),0)。利用 COLUMN 函数生成动态列数作为返回值列数参数,向右复制公式可查找多列。

在 G2 单元格输入“江一燕”,向右拖动公式,H2 单元格会返回性别“男”,I2 单元格返回年龄 45,J2 单元格返回基本工资 3600。

$G2 固定查找值所在单元格,$B:$E 是查找区域,COLUMN(B1)在 B1 单元格时返回 2,向右拖动公式会依次变为 3、4 等,对应查找不同列数据,0 是精确查找。

进阶篇 - 多区域查找

有不同部门的销售数据,根据员工所在部门和姓名从不同区域查询其销售总计。

部门

姓名

销售总计

销售一部

张三

200000

销售二部

李四

100000

销售一部

王五

100000

销售二部

孙六

100000

销售一部

李玉

200000

函数应用 =VLOOKUP(B2,IF(A2="销售一部",A5:B9,D5:E9),2,0)。根据 A2 单元格的部门判断查找区域。

若 A2 单元格为“销售一部”,B2 单元格为“张三”,则会返回其销售总计 200000。

查找值为 B2 单元格的姓名,IF(A2="销售一部",A5:B9,D5:E9)根据部门条件确定查找区域,2 表示返回销售总计所在列,0 是精确查找。

高级篇 - 多条件查找

在员工工资表中,根据部门和姓名查找工资。

部门

姓名

基本工资

计划部

胡苹

1100

计划部

江一燕

3600

人事部

江一燕

2700

人事部

Excel 精英培训

2000

生产部

兰色幻想

2600

生产部

赵志东

1200

市场部

张小三

900

函数应用 =VLOOKUP(E2&F2,IF({1,0},A2:A8&B2:B8,C2:C8),2,0)。先将部门和姓名连接作为查找值,再构建新数组作为查找区域。

若 E2 单元格为“人事部”,F2 单元格为“江一燕”,则会返回其工资 2700。

E2&F2 将部门和姓名合并为查找值,IF({1,0},A2:A8&B2:B8,C2:C8)把部门和姓名列组合后与工资列构成新查找区域,2 表示返回工资所在列,0 是精确查找。

高级篇 - 合并单元格查找

在部门奖金表中,查找员工所在部门的奖金,部门列存在合并单元格。

部门

奖金

生产部

600

人事部

300

计划部

500

人事部

300

生产部

600

市场部

600

生产部

600

市场部

600

人事部

300

生产部

600

函数应用 =VLOOKUP(VLOOKUP("座",D$2:D2,1),A:B,2,0)。通过 VLOOKUP("座",D$2:D2,1)获取截止本行的最后一个非空部门值,再查找奖金。

若在某单元格输入公式,且所在行的部门列有值(如在第 4 行输入公式,D4 单元格所在合并单元格为“人事部”),则会返回人事部奖金 300。

VLOOKUP("座",D$2:D2,1)在 D 列从第 2 行开始查找“座”,返回截止本行的最后一个非空值(即部门名),A:B 是查找奖金的区域,2 表示返回奖金所在列,0 是精确查找。

高级篇 - 带合并单元格的多条件查找

在产品价格表中,根据公司和产品查找对应价格,公司列存在合并单元格。

产品

价格

部门

洗衣机

5000

A 公司

电视

3000

A 公司

空调

2000

A 公司

洗衣机

7000

B 公司

电视

4000

B 公司

冰箱

8000

B 公司

洗衣机

12000

C 公司

电视

6600

C 公司

空调

5000

C 公司

函数应用 =VLOOKUP(F2,OFFSET(B$1,MATCH(E2,A:A,)-1,):C99,2,0)。利用 MATCH 函数查找公司所在行数,再用 OFFSET 函数构建动态查找区域。

若 E2 单元格为“B 公司”,F2 单元格为“洗衣机”,则会返回价格 7000。

F2 为查找值(产品),MATCH(E2,A:A,)-1 查找公司在 A 列的行数并减 1,OFFSET(B$1,MATCH(E2,A:A,)-1,):C99 根据公司行数构建从 B1 开始的动态查找区域,2 表示返回价格所在列,0 是精确

F2 为查找值(产品),MATCH(E2,A:A,)-1 查找公司在 A 列的行数并减 1,OFFSET(B$1,MATCH(E2,A:A,)-1,):C99 根据公司行数构建从 B1 开始的动态查找区域,2 表示返回价格所在列,0 是精确查找。

高级篇 - 一对多查找

在员工信息表中,查找人事部所有员工。

部门

姓名

基本工资

计划部

胡苹

1100

计划部

江一燕

3600

人事部

江一燕

2700

人事部

Excel 精英培训

2000

生产部

兰色幻想

2600

生产部

赵志东

1200

市场部

张小三

900

函数应用 {=VLOOKUP(E$2&ROW(A1),IF({1,0},A$2:A$8&COUNTIF(INDIRECT("a2:a"&ROW($2:$8)),E$2),B$2:B$8),2,0)}。此为数组公式,输入后按 Ctrl+shift+enter 结束。

在指定单元格输入公式后,会依次返回人事部员工“江一燕”“Excel 精英培训”等(向下拖动公式可显示全部)。

E$2&ROW(A1)将部门和动态行号连接作为查找值,ROW($2:$8)生成 2 - 8 的行号,INDIRECT("a2:a"&ROW($2:$8))生成不同行数的区域,COUNTIF(INDIRECT)在这些区域计算部门个数为人事部员工编号,IF({1,0}将编号后的部门和姓名列组合成新数组,2 表示返回姓名所在列,0 是精确查找。

高级篇 - 查找所有值放在一个单元格

在产品销售价格表中,根据产品从左表中查找所有符合条件的价格并用逗号隔开。

年份

产品

销售价格

2011 年

A

34

2012 年

B

35

2013 年

A

31

2014 年

A

62

2015 年

C

54

2016 年

B

68

2017 年

A

79

2018 年

B

4

2019 年

A

29

2020 年

B

36

函数应用 E2=D2&","&IFERROR(VLOOKUP(C2,C3:E$12,3,),"");G2=VLOOKUP(F2,C:E,3,)'

若在 F2 单元格输入“A”,G2 单元格会返回 A 产品的所有价格“34,31,62,79,29”(假设 E 列已按公式计算)。

在 E2 单元格公式中,D2&","&IFERROR(VLOOKUP(C2,C3:E$12,3,),"")先取 D2 单元格内容并连接逗号,再用 VLOOKUP 查找 C2 单元格产品的价格,若找不到则返回空,最后连接起来;G2 单元格公式 VLOOKUP(F2,C:E,3,)' 直接查找 F2 单元格产品在 C:E 区域的价格。

高级篇 - 查找最后一个

在产品进货价格表中,查找 A 产品最后一次进货价格。

日期

产品

进货价格

2019-9-14

A

5

2019-10-1

A

7

2019-11-1

A

8

2019-12-1

A

6

2020-1-1

B

9

2020-2-1

B

10

2020-3-1

A

9

2020-4-1

A

12

2020-5-1

A

10

2020-6-1

B

11

函数应用 =VLOOKUP(1,IF({100,0},0/(B2:B10="A"),C2:C10),2)。利用 0/(条件)将不符合条件的变为错误值,符合条件的变为 0,再用 1 查找最后一个符合条件的值。

会返回 A 产品最后一次进货价格 10。

查找值 1 用于查找满足条件的最后一个值,IF({100,0},0/(B2:B10="A"),C2:C10)中,0/(B2:B10="A")将 B 列中不是 A 的单元格变为错误值,是 A 的变为 0,然后与 C 列组成新的查找区域,2 表示返回进货价格所在列。

Office365 中的新用法 - 批量查找

在员工信息表中,同时查找多个员工的工资。

部门

姓名

基本工资

计划部

胡苹

1100

计划部

江一燕

3600

人事部

江一燕

2700

人事部

Excel 精英培训

2000

生产部

兰色幻想

2600

生产部

赵志东

1200

市场部

张小三

900

函数应用 =VLOOKUP(d2:d12,A:B,2,0)。在 Office365 中,可直接对区域进行批量查找。

在 D2:D12 单元格区域输入多个员工姓名,会在对应的单元格返回其工资。

D2:D12 是查找值区域,A:B 是查找区域,2 表示返回基本工资所在列,0 是精确查找。

Office365 中的新用法 - 多列查找

在员工信息表中,同时查找多个员工的姓名、部门和工资。

部门

姓名

基本工资

计划部

胡苹

1100

计划部

江一燕

3600

人事部

江一燕

2700

人事部

Excel 精英培训

2000

生产部

兰色幻想

2600

生产部

赵志东

1200

市场部

张小三

900

函数应用 =VLOOKUP(A11,A1:E7,{2,3,5},0)。通过指定{2,3,5}作为返回列数,可一次查找多列数据。

在 A11 单元格输入员工姓名,会在对应的单元格返回其姓名、部门和工资。

A11 是查找值,A1:E7 是查找区域,{2,3,5}分别对应姓名、部门和工资所在列,0 是精确查找。

通过以上对 Vlookup 函数全面而详细的讲解,相信大家对这个强大的函数有了更深入的理解和掌握。无论是基础的单条件查找,还是复杂的多条件、反向查找等,都能轻松应对。希望大家在实际工作中多多运用,提高数据处理效率。如果您觉得这篇内容对您有帮助,别忘了点赞、转发和关注我们,让更多的人受益于这些实用的办公技巧!

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言