ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E文精选 > 函数与公式 > Vlookup函数应用教程

Vlookup函数应用教程

作者:绿色风 分类: 时间:2022-08-17 浏览:183
楼主
lrlxxqxa
Vlookup是很常用的查找引用函数,本文将结合示例来展示她经典实用的技巧。


 

Vlookup教程目录

1、Vlookup基础,语法及说明

2、写给对第4参数“省略”还是“简化”,模糊查找还是精确查找有疑惑的朋友

3、VLOOKUP在精确查找时支持通配符,模糊查找时不支持通配符。

4、让Vlookup能够从右往左查询;

5、多条件查找。当需要按照多个并列条件查找时;

6、查找多列信息。利用第3参数可以根据引用列自动调整;

7、Vlookup疑难解答提示,从错误中获取信息。

8、出现#N/A的原因以及如何处理和利用

9、利用Vlookup处理多条件嵌套问题

10、利用Vlookup构建内存数组

11、利用Vlookup返回查找到的多个值

12、利用Vlookup在多个工作表中查找



Vlookup教程.rar
2楼
篮板球
看看各位这样的帖子怎么写,学点经验。
3楼
lrlxxqxa
1、Vlookup基础,语法及说明

VLOOKUP :
搜索某个单元格区域 的第一列,然后返回该区域相同行上任何单元格中的值。
VLOOKUP 中的 V 表示垂直方向。当比较值位于所需查找的数据的左边一列时,可以使用VLOOKUP
语法:
VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])

VLOOKUP 函数语法具有下列参数 :
lookup_value    必需。要在表格或区域的第一列中搜索的值。lookup_value 参数可以是值或引用。
table_array    必需。包含数据的单元格区域。可以使用对区域或区域名称的引用。
col_index_num    必需。table_array 参数中必须返回的匹配值的列号。
range_lookup    可选。一个逻辑值,指定希望 VLOOKUP 查找精确匹配值还是近似匹配值:
如果 range_lookup 为 TRUE 或被省略,则返回精确匹配值或近似匹配值。如果找不到精确匹配值,则返回小于 lookup_value 的最大值。

要点   
如果 range_lookup 为 TRUE 或被省略,则必须按升序排列 table_array 第一列中的值;否则,VLOOKUP 可能无法返回正确的值。
如果 range_lookup 为 FALSE,则不需要对 table_array 第一列中的值进行排序。
如果 range_lookup 参数为 FALSE,VLOOKUP 将只查找精确匹配值。如果 table_array 的第一列中有两个或更多值与 lookup_value 匹配,则使用第一个找到的值。如果找不到精确匹配值,则返回错误值 #N/A。

说明
在 table_array 的第一列中搜索文本值时,请确保 table_array 第一列中的数据不包含前导空格、尾部空格、非打印字符或者未使用不一致的直引号(' 或 ")与弯引号(‘或“)。否则,VLOOKUP 可能返回不正确或意外的值。
在搜索数字或日期值时,请确保 table_array 第一列中的数据未存储为文本值。否则,VLOOKUP 可能返回不正确或意外的值。
如果 range_lookup 为 FALSE 且 lookup_value 为文本,则可以在 lookup_value 中使用通配符(问号 (?) 和星号 (*))。问号匹配任意单个字符;星号匹配任意字符序列。如果要查找实际的问号或星号,请在字符前键入波形符 (~)。   

2、写给对第4参数“省略”还是“简化”,模糊查找还是精确查找有疑惑的朋友

首先,第4参数为0或FALSE表示精确匹配;为<>0或TRUE或省略表示模糊匹配,要求升序排列,否则答案可能错误。注意使用模糊匹配就要进行排序;
其次,说下省略和简化的区别。省略第4参数是指写完第3参数后不写逗号(此时模糊匹配),如果写了逗号就是简化(此时精确匹配)


 

3、VLOOKUP在精确查找时支持通配符,模糊查找时不支持通配符。

在第4参数为0或者FALSE时,第1参数可以使用"*"、"?"来通配;模糊查找时会把*和?当做文本而非通配符处理;


 

D56公式使用了vlookup的精确查找功能,支持通配符使用,
  1. =VLOOKUP("*4",A56:B59,2,)
查询“*4”,返回了姓名列对应的“李四”

D57公式中省略了vlookup的第四参数,使用了模糊查找功能,不支持通配符使用。
  1. =VLOOKUP("*4",A56:B59,2)
因此返回了#N/A错误值。

4楼
lrlxxqxa
4、让Vlookup能够从右往左查询;

利用IF{1,0}或者choose函数构建相应的内存数组


 

利用if函数
E66公式
  1. =VLOOKUP(D69,IF({1,0},B68:B72,A68:A72),2,)
E70公式
  1. =VLOOKUP(D70,IF({0,1},A68:A72,B68:B72),2,)
Vlookup的第二参数IF({1,0},B68:B72,A68:A72)返回的数组如下所示:


 

利用choose函数
E71公式
  1. =VLOOKUP(D71,CHOOSE({1,2},B68:B72,A68:A72),2,)
E72公式
  1. =VLOOKUP(D72,CHOOSE({2,1},A68:A72,B68:B72),2,)


5、多条件查找。当需要按照多个并列条件查找时;


添加辅助列或者用"&"合并多条件后作为一个查询值


 

(1)构建内存数组,将多条件合并作为vlookup第一参数进行查找

F84公式
  1. =VLOOKUP(F82&G82&H82,IF({1,0},A79:A85&B79:B85&C79:C85,D79:D85),2,)
(2)构建辅助列,再用vlookup查找

F96公式
  1. =VLOOKUP(F82&G82&H82,E87:I93,5,)
6、查找多列信息。利用第3参数可以根据引用列自动调整;

利用COLUMN函数进行调整,方便批量填充,如用COLUMN(),COLUMN(A:A)形式,如果需要偏移,在此基础上加减N即可,如COLUMN()+N


 

根据A112单元格的学号,返回数据区域内的整行信息。

B112公式
  1. =VLOOKUP($A112,$A$104:$F$108,COLUMN(),)
向右填充公式

5楼
lrlxxqxa
7、Vlookup疑难解答提示,从错误中获取信息。

使用vlookup函数的过程中,经常会遇到种种的错误值,如下提示将有助于您了解错误成因,尽快排除错误或调换方法。

可点击图片,拖动鼠标滚轮放大图片;或下载本楼层附件本地观看:)


 


8、出现#N/A的原因以及如何处理和利用

#N/A错误是使用vlookup函数时最常见的一种,虽然同样返回#N/A错误,但其成因多种多样,通过如下图示,您将了解到出错的具体原因,以及如何处理、修正甚至利用错误提示。


 


 

Vlookup疑难解答提示.rar
6楼
lrlxxqxa
9、利用Vlookup处理多条件嵌套问题

日常工作中,我们常常使用if函数进行多条件的嵌套选择和判断,但在office2003中,一旦超过7重嵌套,使用if函数会很苦恼。
灵活的使用vlookup函数,可以使问题迎刃而解:)

下面我们通过两个示例来具体阐述:


(1)需要根据给定的消费金额,判断所属会员等级。消费金额位于B16单元格


 


首先看使用if函数的方法:
C16公式
  1. =IF(B16>=30000,"金卡",IF(B16>=15000,"银卡",IF(B16>=8000,"五级",IF(B16>=5000,"四级",IF(B16>=3000,"三级",IF(B16>=2000,"二级",IF(B16>=1000,"一级")))))))
再看使用vlookup的方法:
D16公式
  1. =VLOOKUP(B16,B6:C12,2)
在这里,我们使用了vlookup函数的模糊查找功能,在消费金额中查找22222,找不到精确匹配值,继续在消费金额中查找小于22222的最大值,找到了15000,并返回其对应的同行的会员等级“银卡”。
相对于if函数,极大地简化了运算过程。

(2)现需要根据给定商品,提取相应金额。商品位于B41单元格



 

使用if函数:=if(b41="A",100,if(b41="B",200,if(b41="C",300,if(……
商品种类超过8种,嵌套超过7层

使用vlookup的精确查找功能,可以根据给定商品迅速提取对应的金额
C42公式
  1. =VLOOKUP(B41,B25:C37,2,)
7楼
lrlxxqxa
10、利用Vlookup构建内存数组


 

D4单元格中输入数组公式
  1. =VLOOKUP("*",$A$1:$L$1,(ROW(1:6)-1)*2+TRANSPOSE(ROW(1:2)),)
向右向下填充即可。

公式中vlookup的第三参数为(ROW(1:6)-1)*2+TRANSPOSE(ROW(1:2)),这部分返回一个6行2列数组{1,2;3,4;5,6;7,8;9,10;11,12},通过在编辑栏选中这部分,按F9可以清晰看到。


 

同理,要构建如下图所示蓝色区域的数组,调整vlookup的第三参数即可。


 

A18输入数组公式
  1. =VLOOKUP("*",$A$1:$L$1,(ROW(1:3)-1)*4+TRANSPOSE(ROW(1:4)),)
可以看出,此种情况下使用vlookup构建数组,是利用了vlookup的精确查找,第一参数使用通配符*,第四参数构建一个行列矩阵数组,当目标数组的行列变更时,调整vlookup的第四参数即可。

由此可得此种情况下,利用Vlookup构建数组的通用公式为
  1. =VLOOKUP("*",$A$1:$L$1,(ROW(1:行数)-1)*列数+TRANSPOSE(ROW(1:列数)),)
8楼
lrlxxqxa
11、利用Vlookup返回查找到的多个值


 

需要根据E6单元格给定的著作提取其包含的人物。一般这类问题我们使用index配合small和if函数的数组公式。

为了便于理解以及兼容数据区域的记录添加,定义两个名称:

著作
  1. =OFFSET(返回多个查找值!$B$6,,,COUNTA(返回多个查找值!$B:$B)-1)
人物
  1. =OFFSET(返回多个查找值!$C$6,,,COUNTA(返回多个查找值!$C:$C)-1)
F6单元格输入数组公式
  1. =INDEX(C:C,SMALL(IF(著作=E$6,ROW(著作),4^8),ROW(B1)))&""
下拉填充即可根据选择的著作显示包含的多个人物。

现在我们通过vlookup来提取该著作包含的多个人物。

G6单元格数组数组公式
  1. =IF(COUNTIF(著作,E$6)<ROW(A1),"",VLOOKUP(E$6&ROW(A1),IF({1,0},著作&COUNTIF(INDIRECT("b6:b"&ROW(著作)),著作),人物),2,))
下拉填充,可以得到同样的结果。


思路解析:

vlookup的第二参数是IF({1,0},著作&COUNTIF(INDIRECT("b6:b"&ROW(著作)),著作),人物),返回数组{"红楼梦1","贾宝玉";"西游记1","唐僧";"三国演义1","曹操";"水浒传1","武松";"红楼梦2","林黛玉";"红楼梦3","王熙凤";"三国演义2","貂蝉";"水浒传2","林冲";"西游记2","孙悟空";"西游记3","猪八戒"}

我们把这个区域呈现出来,是如下状态:


 

利用if第一参数为COUNTIF(著作,E$6)<ROW(A1),是为了公式填充位置超出著作包含的人物个数时显示为空,来消除#N/A错误值。


9楼
lrlxxqxa
12、利用Vlookup在多个工作表中查找


结合如下示例解析该问题。
数据源位于工作簿中的sheet1、sheet2和sheet3中,结构如下所示:


 


 


 

查询界面如下。要求根据给定的序号查询对应的“出货人”、“收件人”和订单状态。


 

解决方案:

定义名称name
  1. =REPLACE(GET.WORKBOOK(1),1,FIND("]",GET.WORKBOOK(1)),)&T(NOW())
在‘查询’工作表的C2单元格输入数组公式
  1. =IF(ISERROR(VLOOKUP($B2,INDIRECT("'"&INDEX(name,MATCH(0,0/COUNTIF(INDIRECT("'"&name&"'!A:A"),$B2),))&"'!A:I"),2,)),"",VLOOKUP($B2,INDIRECT("'"&INDEX(name,MATCH(0,0/COUNTIF(INDIRECT("'"&name&"'!A:A"),$B2),))&"'!A:I"),2,))
vlookup第四参数,根据所需数据的列位置分别使用2,5,9

思路解析:

观察数据源和查询界面,发现需要查询的序号分别位于三张工作表内,那么首先要确定从哪张工作表中提取数据;

利用宏表函数定义name,返回工作簿内各个工作表的名称{"查询","Sheet1","Sheet2","Sheet3"}。我们就C2单元格公式具体解析:


 

index的第二参数MATCH(0,0/COUNTIF(INDIRECT("'"&name&"'!A:A"),$B2),)这部分返回的是所查询序号位于name返回的数组中的位置


 

由于B2单元格序号为1,位于sheet1的A列,而sheet1是数组{"查询","Sheet1","Sheet2","Sheet3"}的第二个元素,所以返回2.

最后利用if嵌套iserror函数容错,在2007以及以上版本中,可以直接利用iferror函数。


vlookup多表调用2003.rar
10楼
lrlxxqxa
此楼放置和后期添加使用案例链接以备查:

【函数解读系列】之Vlookup和Lookup函数一一过招
http://www.exceltip.net/thread-435-1-1.html


VLOOKUP函数 动态图解
http://www.exceltip.net/thread-8255-1-1.html


如何解决vlookup第一参数是数组的问题?
http://www.exceltip.net/thread-20084-1-1.html


vlookup精确查找的增强版
http://www.exceltip.net/thread-3638-1-1.html



11楼
海洋之星
谢谢锐版分享,学习
12楼
田白久
感谢楼主的分享,太好了。
首次接触excel函数,就是vlookup,从vlookup中,认识了函数的强大和便捷,提高了工作效率,在使用vlookup函数中,遇到了很多不解和疑惑,楼主这一贴,太及时啦,刚看了个开头,很受用,我对vlookup的认识,更加全面,呵呵。
13楼
点圈圈
让Vlookup能够从右往左查询

正在困惑这个问题呢 太好了 感谢**!
14楼
lgcmeli
确实是个好东西。总结一起了。
15楼
1ns0
非常喜欢网站提供的各种教程,谢谢分享!·
16楼
1ns0
非常喜欢网站提供的各种教程,谢谢分享!·
17楼
eliane_lei
谢谢分享!
18楼
larkzh
全面,一定要收藏。
19楼
ps1987
感谢! 以前就只用多表调用、、、学习了
20楼
相交的平行线
这帖必须顶,受益匪浅呀!
21楼
zhbei
vlookup  是最常用的 函数了 谢谢分享
22楼
大憨的DaDaDa
谢谢,还得好好消化。
23楼
狼外公
谢谢锐版分享,学习
24楼
蘑菇花
关注中!感兴趣的朋友都来说说
25楼
lxllovelyb
我也要学习
26楼
苍茫
先收藏了,慢慢看着学习~
27楼
angel928
谢谢锐版,下载下来学习。
28楼
fzh2618182
正准备学Vlookup函数,楼主提供的材料太好了,谢谢!
29楼
shanshilu
收藏了,慢慢看
30楼
sopo
学习学习学习
31楼
heaven827
不错不错,好资料,果断下载收藏,
32楼
开心豆
学习
33楼
红巴锡
一看到楼主的气势,我就觉得楼主同在社区里灌水的那帮小混蛋有着本质的差别
34楼
happymao
这个教程很好,感谢分享
35楼
clear158
****xx谢谢谢
36楼
707268837
我今晚下载了,收获不小,多谢了!
37楼
紫气东来6677
非常棒,收藏了。
38楼
猴子
谢谢版主的分享,重要的是思路啊、、、、赞一个
39楼
two4mamba
下载来学习一下,谢谢分享了~
40楼
qicpw
找到好贴不容易,我顶你了,谢了
41楼
19980919hy
感谢分享!正是我遇到的问题,学习一下能否解决我的问题。
42楼
凌乱然了
很详细,学习了,谢谢
43楼
huiwennuan
=VLOOKUP("*4",A56:B59,2,),请问,这个公式中“*4”中的双引号“”可以去掉吗? 这XIJ04不是文本,为什么需要加“”呢?
参考:如果 range_lookup 为 FALSE 且 lookup_value 为文本,则可以在 lookup_value 中使用通配符(问号 (?) 和星号 (*))。
44楼
陈皮皮小皮
收藏,学习.
45楼
笑依然
太感谢了 这个函数 我做库存表的时候要用 我只会简单的模糊查找 谢谢楼主让我知道更多相关知识  有时间会好好学习 0.gif
 
46楼
果冻小卡
Mark一下,慢慢学
47楼
九妖小怪
坚持回帖一个月。积极学习!
48楼
kuangben
楼主V5,感谢分享,学习了。
49楼
feishifan
谢谢分享。

50楼
LEXIEQI
学习,知道VLOOKUP很有用,但是一知半解中啊~先收藏慢慢看
51楼
晓寒89
谢谢分享
52楼
jinwood
非常感谢您的耐心讲解,对vlookup又有了新的认识
53楼
-芈芾
谢谢分享
54楼
6135
学习下先,受益匪浅
55楼
gx002725
很强大,慢慢学习了!
56楼
413581684
很强大,慢慢学习!
57楼
lqin119
非常感谢楼主分享**
58楼
苦不堪言
谢谢分享,正在学习
59楼
爱如少年
学习下,谢谢分享..................
60楼
陶筱箪
火速收藏之,谢谢楼主!
61楼
boa0971
好东西,vlookup是excel的最重要的门槛
62楼
天涯路漫漫
真是个好东西呀,好好研究研究。
63楼
Danièl
好好学习~~~~
64楼
8785276
学习 膜拜~~~~
65楼
shushangyi
这个函数很常用,得好好学
66楼
率性而为
这个好像很复杂,初学者看来要多下功夫了
67楼
haige007
来学习点经验
68楼
2276364850
感谢帮助
69楼
zxpzxp
版主辛苦了。
70楼
jianwei_01
真是个好东西呀,要系统的学习一下!
71楼
aimina
向高手学习
72楼
nardowho
希望不会是百度来的吧?
73楼
雨墨烟颜阳光
好资料,谢谢楼主分享
74楼
jackenjun
第一个附件怎么是obytes呢?害我被扣钱了啊
75楼
zxpzxp
学习中!谢谢楼主。
76楼
somnus27
学习
77楼
upsate
好贴,谢谢分享!
78楼
阿突
Remark 下,慢慢看回头,谢谢!
79楼
yezidis
好多内容啊。这个要学!
80楼
swbuing2013
学习学习
81楼
守望岁月
好好学习
82楼
巨毒玫瑰
谢谢+5
83楼
swbuing
学习学习
84楼
liurenchangyu
感谢
85楼
海洋之星
复习一下哈哈
86楼
L11
目录12没有呢.
87楼
yxming
好东西,大家分享
88楼
mjeremy
重新学excel~太多不懂的地方了!
89楼
a8507024
谢谢
讲解的很不错啊
90楼
lrlxxqxa
标记
91楼
JaneOo
感谢!
92楼
拉米球球
学习了
93楼
月大虾
谢谢。如此经典的资料!
94楼
731w
很全面了。
95楼
俟人.琳
好好学习,谢谢分享。
96楼
继续期待
感谢。好好学习
97楼
Charles_MC
谢谢,学习一下
98楼
马上开始
#在这里Vlookup函数应用教程快速回复#
99楼
jm9999
很好,谢谢!
100楼
kimishuai
谢谢分享
101楼
小仪
102楼
lxcj
太棒了,学习,学习。
103楼
〆樱木嘉儿╰
谢谢大神的分享,我找这个很久了
104楼
〆樱木嘉儿╰
喜欢你滴头像,樱木花道哎~~~
105楼
湘雨涵
感谢!
106楼
Charles_MC
谢谢 学习一下
107楼
yuzhilir
感谢分享哟
108楼
poiuyman5
Great Job !!!
109楼
wumin88838
学习了
110楼
楷山兄
及时雨
111楼
zg871012
这个东西不错好好学习下
112楼
yeminqiang


113楼
gzdragon
多多补课。
114楼
随言_ぃ
正在学习,很实用
115楼
B笨I笨N
thx~~~~
116楼
辉辉
谢谢,这个要认真学习!
117楼
lexleen
很好想,学习了!
118楼
zppzmax


高手在民间啊学习了!
119楼
joe_fanso
感谢帮助:)
120楼
游心三痴
留名备用,需要6和12的整合功能在多表单内查询,返回其后多列的数据
121楼
红红的太阳
非常的强大,慢慢学习。
122楼
pds169
好贴
123楼
hzcong
学习
124楼
zyj0424
感谢楼主分享。菜鸟第一章
125楼
slqin
很详细的教程
126楼
致陵__黄金亮
大爱,谢谢分享~~~
127楼
firedancer
good
128楼
明月如霜
有用。学习中。。
129楼
liyh
谢谢楼主分享,学习学习。
130楼
weseeyou
强贴,多谢分享!
131楼
yeahwy
perfect
132楼
pzy61268
133楼
zhangzet
学习了
134楼
wjzh13
谢谢发的Vlookup函数应用教程
135楼
ourstorybeging
好贴,必回!
136楼
无知井里蛙
学习了。谢谢
137楼
修斯普罗米
技能,get√。
138楼
过期品24
学习
139楼
ads
学习了!
140楼
vlook-up
好贴!
141楼
nokia9393
常用的公式 。。系统的学习一下,。

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap