龙空技术网

不需要四处求人,一篇文章帮你掌握VLOOKUP函数,玩转Excel查找

乡村振兴白皮书 581

前言:

今天我们对“模糊查询是什么意思”大概比较注重,大家都需要分析一些“模糊查询是什么意思”的相关文章。那么小编同时在网摘上汇集了一些有关“模糊查询是什么意思””的相关知识,希望姐妹们能喜欢,你们快快来了解一下吧!


不需要四处求人,一篇文章帮你掌握VLOOKUP函数,玩转Excel查找



利用VLOOKUP函数进行多列查找!利用VLOOKUP函数进行多条件查找!利用VLOOKUP函数进行模糊查找!利用VLOOKUP函数进行一对多查找!通过简称或关键字模糊匹配查找全称!




VLOOKUP函数多列查找

当需要查找的列很多,第3个参数如果一个个手工输入,公式要写很多次,如果第3个参数用COLUMN()就不用一个个输入。例如,要查找序号为1的姓名、部门等多个字段内容。

查找姓名公式为=VLOOKUP($A$31,$A$22:$N$23,COLUMN(B23),0)。

鼠标放在单元格右下角,单击+,向右拖动鼠标,就可以填充其他字段公式,如图3-11-2所示。


图3-11-2

VLOOKUP函数多条件查找

将不同条件用&连接起来,使多个条件变为一个条件。

如图3-11-3所示,要查找产品名称和型号都匹配的单价,可以把产品名称和型号2个字段合并为一个字段,即辅助列内容,再用VLOOKUP查找。


图3-11-3

VLOOKUP函数模糊查找

例如,要计算不同的销售额对应的提成比例,如果用IF函数,公式会很长,用VLOOKUP模糊查找最后一个参数省略或者为TRUE或1,表明该查找模式为模糊查找;

如果找不到精确匹配值,则返回小于lookup_value的最大数值。

table_array第一列中的值必须以升序排序,否则VLOOKUP可能无法返回正确的值。

D3公式为=VLOOKUP(B3,$G$3:$H$11,2),如图3-11-4所示。


图3-11-4

VLOOKUP函数一对多查找

Excel中VLOOKUP函数可查询符合条件的一行数据,但如果查询结果符合条件的是多行数据怎么办?例如下面的表格中要查找姓名为“李飞”对应的职务,有3行符合条件的记录,怎样把这符号条件的3行记录都找出来呢?

如图3-11-5所示。


图3-11-5

要得到的结果为红色方框内内容,如图3-11-6所示。


图3-11-6

方法一:数据透视表

把姓名和职务依次拉到行标签,如图3-11-7所示。


图3-11-7

得到结果如图3-11-8所示。


图3-11-8

在数据透视表的设计菜单下“报表布局”中选择“以表格形式显示”,如图3-11-9所示。


图3-11-9

结果如图3-11-10所示。


图3-11-10

方法二:添加辅助列

操作步骤如下:

Step1 在姓名前面插入一个辅助列,A2输入公式=B2&COUNTIF($B$2:B2,B2),下拉填充到表格末端。这样相当于给姓名加了编号,如图3-11-11所示。


图3-11-11

Step2 在H2输入公式=IFERROR(VLOOKUP($G$2&ROW(A1),A:E,5,0),""),下拉到表格末端。

$G$2&ROW(A1)相当于将VLOOKUP函数的查询值加上了不同的序号,如图3-11-12所示。


图3-11-12

方法三:数组公式

用函数INDEX+SMALL组合实现,公式为:

={INDEX($B$1:$E$8,SMALL(IF($B$1:$B$8=$G$2,ROW($B$1:$B$8),2^20),

ROW(1:1)),4)&""}

花括号{}指数组公式,用【Ctrl+Shift+Enter】输入,再向下填充,直到结果为错误值#REF!。

公式分解:

Step1 先找出符合条件的数据所在行。

ROW()返回的是行号,2^20=1048576,即Excel 2007以及2010、2013版本承载的最多的行号。

IF($B$1:$B$8=$G$2,ROW(),2^20)这个意思是如果找到符合条件的记录就返回那个记录所在的行号,否则就返回Excel能承载的最大行号。

公式返回结果得到数组{1048576,3,4,1048576,1048576,7,1048576}。

Step2 添加辅助列,找出数据区域除字段名之外的行号,用公式ROW(1:1)实现,得到数组{1,2,3,4,5,6,7}。

Step3 在第一步计算得到的数组中找出第二步数组的最小值,公式为=SMALL($I$2:$I$8,J2),如图3-11-13所示。

如图3-11-14所示,SMALL函数返回数组中第k个最小值。


图3-11-13


图3-11-14

例如,J2=1,公式返回I列数组第1小的数据,J3=2,公式返回第2小的数据。

公式返回得到的数组为{3,4,7,1048576,1048576,1048576,1048576}。

Step4 用INDEX函数查找符合条件的记录。

我们要查找的职务对应第4列,姓名为“李飞”的对应行号是3、4、7行,即第3步公式返回的结果,如图3-11-15和图3-11-16所示。


图3-11-15


图3-11-16

怎样通过简称或关键字模糊匹配查找全称

在日常工作中,很多时候为了录入方便将某些内容只录入关键字或者简称,比如说公司名称“深圳市腾讯计算机系统有限公司”,在录入时只录入“腾讯”两个字,这样在后期数据统计时由于名称不是全称可能造成很多麻烦,本招介绍如何用VLOOKUP函数通配符用法来实现模糊匹配,通过简称或者关键字查找全称.

如图3-11-17所示,要看B列的游戏名称在A列是否存在,B列游戏名称是A列的一部分,在B列游戏名称前后加上通配符*,再用VLOOKUP查找,C2公式=VLOOKUP("*"&B2&"*",$A$1:$A$10,1,0),注意,这里最后一个参数要用0,精确查找。


图3-11-17

VLOOKUP查询常见错误

VLOOKUP函数查找经常会出现#N/A等错误值,有时候明明要查找的内容有,但还是报错,究竟是什么原因呢?本招介绍VLOOKUP查找常见错误以及解决方法。

第一类:函数参数使用错误。

(1)第2个参数区域设置错误之1。

例1:如图3-11-18所示,根据姓名查找年龄时产生错误。


图3-11-18

错误原因:

VLOOKUP函数第二个参数是查找区域,该区域的第1列有一个必备条件,就是查找的对象(A9)必须对应于区域的第1列。

本例中是根据姓名查找的,那么,第一个参数姓名必须是在区域的第1列位置,而公式中姓名列是在区域A1:E6的第2列。

所以公式应改为=VLOOKUP(A9,B1:E6,3,0)。

(2)第2个参数区域设置错误之2。

例2:如图3-11-19所示,根据姓名查找职务时产生查找错误。

错误原因:

本例是根据姓名查找职务,第2个参数B1:D6根本就没有包括E列的职务,当然会产生错误了。

所以公式应改为=VLOOKUP(A9,B1:E6,4,0)。

(3)第4个参数少了或设置错误。

例3:如图3-11-20所示,根据工号查找姓名。


图3-11-19


图3-11-20

错误原因:

VLOOKUP第四个参数为0时表示精确查找,为1或省略时表示模糊查找。

如果忘了设置第4个参数则会被公式误以为是故意省略,按模糊查找进行。当区域也不符合模糊查找规则时,公式就会返回错误值。

所以公式应改为=VLOOKUP(A9,A1:D6,2,0)或=VLOOKUP(A9,A1:D6,2,)。

注:当参数为0时可以省略,但必须保留“,”号。

(4)对模糊匹配理解错误。

例4:根据简称或关键字查找全称,很多人以为模糊查找,最后一个参数设为1,此模糊匹配非模糊查找。

(5)查找为数字,被查找区域为文本型数字。

例5:如图3-11-21所示,根据工号查找姓名,查找出现错误。


图3-11-21

错误原因:

在VLOOKUP函数查找过程中,文本型数字和数值型数字会被认为不同的字符,所以造成无法成功查找。

解决方案:

把查找的数字在公式中转换成文本型,然后再查找。

即:=VLOOKUP(A9&"",A1:D6,2,0),或者用分列,前2步默认,第3步把“常规”改为“文本”,如图3-11-22所示。


图3-11-22

(6)查找格式为文本型数字,被查找区域为数值型数字。

例6:如图3-11-23所示,根据工号查找姓名,查找出现错误。

解决方法:

把文本型数字转换成数值型。

即:=VLOOKUP(A9*1,A1:D6,2,0)或者直接选中要转换为数值的单元格或区域,单击下拉框的转换为数字,如图3-11-24所示。


图3-11-23


图3-11-24

(7)没有正确使用引用方式,造成在复制公式后区域发生变动引起错误。

例7:如图3-11-25所示,当B9的公式复制到B10和B11后,B10公式返回错误值。


图3-11-25

错误原因:

由于第二个参数A2:D6是相对引用,所以向下复制公式后会自动更改为A3:D7,而A10中的工号A01所在的行,不在A3:D7区域中,从而造成查找失败。

解决方案:

把第二个参数的引用方式由相对引用改为绝对引用即可。

B9公式改为=VLOOKUP(A9,$A$2:$D$6,2,0)。

(8)数据表中含有多余的空格。

例8:如图3-11-26所示,由于A列工号含有多余的空格,造成查找错误。


图3-11-26

错误原因:

多一个空格,用不带空格的字符查找当然会出错了。

解决方案:

手工替换掉空格,建议用这个方法。在公式中用TRIM函数替换空格而必须要用数据公式形式输入。

即:=VLOOKUP(A9,TRIM(A1:D6),2,0),按组合键【Ctrl+Shift+Enter】输入后数组形式为{=VLOOKUP(A9,TRIM(A1:D6),2,0)}。

(9)类空格但非空格的字符。

例9:在表格存在大量的“空格”,但又用空格无法替换掉时,这些就是类空格的不可见字符。

这时可以“以其人之道还治其人之身”,直接在单元格中复制不可见字符粘贴到替换窗口,替换即可,如图3-11-27所示。


图3-11-27

(10)不可见字符的影响。

例10:如图3-11-28所示的A列中,A列看上去不存在空格和类空格字符,但查找结果还是出错。

我们可以用EXACT函数判断单元格内容是否完全一致,当返回结果为TRUE,表示结果完全相同,当结果为FALSE,表示单元格内容不完全一致。


图3-11-28

公式=EXACT(A4,A9)返回结果为FALSE,说明表面看上去内容相同的A4和A9单元格实际上内容不一致。

出错原因:

这是从网页或数据库中导入数据时带来的不可见字符,造成了查找的错误。

解决方案:

在A列后插入几列空列,然后对A列进行分列操作,即可把不可见字符分离出去,如图3-11-29所示。


图3-11-29

(11)反向查找VLOOKUP不支持产生的错误。

例11:如图3-11-30所示的表中,根据姓名查找工号,结果返回了错误。

错误原因:

VLOOKUP不支持反向查找。

解决方法:

①用IF函数重组区域,让两列颠倒位置,或者直接通过复制粘贴把两列位置互换。

=VLOOKUP(D8,IF({0,1},D2:D4,E2:E4),2,0)

②用INDEX+MATCH组合实现。

=INDEX(D2:D4,MATCH(D8,E2:E4,0))

(12)通配符引起的查找错误。

例12:如图3-11-31所示,根据区间查找提成返回错误值。


图3-11-30


图3-11-31

错误原因:

~用于查找通配符,如果在VLOOKUP公式中出现,会被认为特定用途,非真正的~。

如在表格中查找3*6,356、376也被查找到,如图3-11-32所示。

如果精确查找3*6,需要使用~,如图3-11-33所示。


图3-11-32


图3-11-33

解决方法:

用~~就可以表示查找~了。

所以公式可以修改为

=VLOOKUP(SUBSTITUTE(A8,"~","~~"),A2:B4,2,0)。

(13)VLOOKUP函数第1个参数不直接支持数组形式产生的错误。

例13:如图3-11-34所示,同时查找A和C产品的和,然后用SUM求和。


图3-11-34

错误原因:

VLOOKUP第1个参数不能直接用于数组。

解决方法:

利用N/T+IF结构转化一下数组,公式修改为

=SUM(VLOOKUP(T(IF({1},A8:B8)),A2:B5,2,))。

或者用SUMIF函数解决,公式为=SUM(SUMIF(A2:A5,{"A","C"},B2:B5))。

(14)在Excel 2003版本引用Excel 2007或者以上版本提示无效。

例14:工作簿1要查找的数据是Excel 2003版本,数据源在工作簿2,版本为Excel 2007或者以上版本,在工作簿1的B2单元格输入公式

=VLOOKUP(A2,[工作簿2]Sheet1!$A:$B,2,0),

提示错误,如图3-11-35所示。


图3-11-35

如果公式改为

=VLOOKUP(A2,[工作簿2]Sheet1!$A$1:$B$65536,2,0)

则不会提示错误,这是因为Excel 2003版本最多只能承载256列65536行数据,而Excel 2007或者以上版本可以承载1048576行16384列数据,当数据源引用的行数超过了要查找的数据所在工作表最多能承载的行数引用就无效了。

解决方法:

把低版本的Excel文件转换为高版本的文件,单击左上方的文件或Office按钮,可以看到最下面的菜单“选项”,单击“转换”,就可以把2003版本的文件转换为2007或以上版本的文件。

标签: #模糊查询是什么意思