Excel函数江湖从不缺少酒,更不缺少故事!!!
烽烟再起,函数大擂台迎来两位重量级选手。守擂者是号称全民偶像、人见人爱车见车载的巨星级函数VLOOKUP,挑战者则是名气不大实力强劲、高手的贴身武器LOOKUP函数!这与生俱来的对手,究竟会在函数擂台上擦出怎样的火花?青梅煮酒论英雄,让我们拭目以待!
ROUND 01 基本用法:VLOOKUP小胜
VLOOKUP是在表格或区域中按行查找内容的函数,它的基本语句是:
=VLOOKUP(查找值,查找区域,返回值的列号、精确/近似匹配 )
其中:参数①必须出现在参数②的首列,参数③必须在参数①和参数②的列数之间,参数④可以表示为1或0。举个例子,某位海迷想要根据姓名找出十一个超新星对应的绰号,于是,他写了如下公式:
=VLOOKUP(D2,A1:B12,2,0)
公式说明:
VLOOKUP函数的参数①是动漫人物的姓名,单元格D2——尤斯塔斯·基德 ,它出现在参数②A1:B12——姓名绰号对照表的首列A1:A12之中,参数③的值为2,表示返回参数②A1:B12的第二列,即B列中的绰号,它不能大于参数②的最大列数2。参数④为0,表示精确匹配。于是整个函数公式的含义可以表达为,从A1:B12的首列中找出值等于D2的单元格,返回A1:B12的第二列与之对应单元格中的内容。
LOOKUP函数用于查询一行或列并查找另一行或列中的相同位置的值,它的基本语句是:
=LOOKUP(查找值,查找区域,[返回区域])
其中,参数②查找区域须按升序排列。参数③返回区域不是必填项目,当参数③被省略,则以参数②查找区域的最后一行或最后一列为返回区域,我们称这种使用方式为数组形式。但是我们通常建议使用向量形式,即保留参数③,此时查找区域和返回区域均为一列或一行,且大小相同。同样的例子,LOOKUP是怎么做的?
=LOOKUP(D9,A1:A12,B1:B12)
什么情况?我用眼睛都能看出查询结果错了,莫非LOOKUP函数失灵了?当然不是,你再返回上一段看一下,没错,标红部分,参数②查找区域须按升序排列。
升序排列!升序排列!升序排列!多次强调即重点哈,是谁的小眼睛还没有看老师!
SO,如果LOOKUP函数像这样不听使唤,那你有可能掉进了LOOKUP的陷阱里,你的参数②是否按升序排列?
PS:与VLOOKUP的遍历查询不同,LOOKUP的查询原理是二分法,LOOKUP陷阱与二分法有关,三言两语难以言明,感兴趣的小伙伴可以自行研究!
由此观之,在基本用法的较量中,LOOKUP的语句较复杂且需要对查找区域进行升序排列,不如VLOOKUP函数简洁实用。
第一回合,函数基本用法,VLOOKUP小胜!!!
ROUND 02 模糊包含查找:VLOOKUP完胜
有时候,我们所获得的数据并不能轻松地通过LOOKUP和VLOOKUP的基本用法精确匹配。换句话说,查找值和查找区域存在某种肉眼可见的明显对应关系,但并非完全相等。比如,对《海贼王》这部漫画不甚熟悉的小伙伴可能记不全主人公路飞的全名,此时,我们如何利用路飞这个简称在对照表中找到他的绰号呢?这种问题在工作中非常常见,比如已知供应商简称找全称、已知名字找全名,等等。类似这样的问题,我们姑且称之为“模糊包含查找”。
对付“模糊包含查找”问题,我们不能简单地使用VLOOKUP或LOOKUP函数的基本用法来解决,不然结果是前者“不知所措”,后者“张冠李戴”!!!
那么遇到这种问题,VLOOKUP和LOOKUP是不是就都束手无策了呢?当然不是,作为实力强劲的查询明星函数,怎能就此溃败!和基本用法一样,VLOOKUP和LOOKUP在解决模糊包含查找问题时也是“你有你的张良计,我有我的过墙梯。”
先来看看VLOOKUP函数的张良计——通配符,星号"*"和问号"?"。
星号"*":通配任意个字符,通常单独使用,表示此处可以没有字符,也可以有任意个任意字符。
问号"?":通配单个字符,可以重复使用,表示此处必须有与问号相同个数的字符。
我们通配符至于查找值的前面或后面,用双引号圈定表示常量字符,并用连接符"&"连接起来,形成“"*"&B2”或“"*"&B2&"?"”之类的模糊查找值作为VLOOKUP的首个参数,其余参数与基本用法一致即可。
=VLOOKUP("*"&D3&"*",A1:B12,2,0)
公式说明:
查找值中使用了通配符,"*"&D3&"*"表示D3的前后均允许存在任意字符,即只要查找区域的首列A2:A12中的单元格值包含D3(路飞),就返回对应的B列值。这就是VLOOKUP的模糊查找之道!
我们再来看看LOOKUP函数的过墙梯——FIND函数。
由于LOOKUP函数首个参数不能使用通配符,我们只能通过文本查找函数FIND来帮助LOOKUP识别查找区域是否包含查找值。FIND函数的基本语句是=FIND(查找文本,包含查找值的文本),它可以返回所查找文本在包含文本中出现的首字符位置值,例如FIND(孙,孙悟空)=1,FIND(悟空,孙悟空)=2。
我们使用FIND函数来构造一个全新的查找区域,再赋予LOOKUP的首个参数以一个足够大的数字,即可完成LOOKUP的模糊查找。
=LOOKUP(100,FIND(D9,A2:A12),B2:B12)
公式说明:
查找值100是一个足够大的数,它一定大于FIND函数的任意一个返回值,即它大于查找区域A2:A12的最大文本长度。FIND函数一一查找D9单元格文本“路飞”在A2:A12中的每一个单元格文本中出现的位置。如果查询结果是唯一的,则A2:A12单元格文本中仅有一个单元格返回数字,其余单元格均因不包含D9单元格文本“路飞”而返回错误值#N/A。那么,由FIND函数构成的新查找区域仅是由1个数字和多个#N/A组成的。由于LOOKUP的查找值100始终大于FIND的返回值,即大于查找区域值,则根据LOOKUP函数返回不大于查找值的最大数值对应的单元格这一特性,即可完成模糊查找。
关键要点:LOOKUP的查找值一定要大于FIND的返回值!!!
由此观之,在模糊包含查找的较量中,VLOOKUP仅凭几个简单符号即可四两拨千斤,而LOOKUP却需要劳师动众地搬来FIND救场,VLOOKUP在语句的简便性和易读性上都远超LOOKUP。
第二回合,模糊包含查找,VLOOKUP完胜!!!
结束语:VLOOKUP与LOOKUP的较量才刚刚开始,小花希望通过对比的形式,加深各位小花瓣对这两个高频函数的理解和掌握,以便在工作中择优使用。在前两回较量中,VLOOKUP占据上风,但LOOKUP会甘愿就此落败吗?敬请期待!
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved