WPS表格常用查找函数终极指南-第一期
WPS金话筒 | WPS寻令官
在日常的数据处理工作当中,经常需要对成百上千行的数据进行查询,掌握这几个函数,让你在数据查询中游刃有余。
本系列将详细介绍六个最常用的查找引用函数:VLOOKUP、HLOOKUP、XLOOKUP、LOOKUP、INDEX、MATCH,通过通俗易懂的案例,帮助你理解它们各自的特点和适用场景。本系列共四期,本期为第一期,介绍VLOOKUP与HLOOKUP函数。
1️⃣VLOOKUP——最常用的查询函数,入坑必备
要是给Excel函数圈排资论辈的话,VLOOKUP绝对是C位出道的那一个。
它的作用是在数据表区域的首列中搜索某个特定的值,然后返回该行中指定列的数据。要使用它,需要填写四个参数:
=VLOOKUP(查找值,数据表,列序数,[匹配条件])
参数详解:
查找值——找什么:你要查找的值。
数据表——在哪儿找:你要搜索的区域。注意:查找值必须位于这个区域的第一列。
列序数——返回第几列:你要返回的数据在查找区域中的第几列。例如,区域从B列开始,你要返回D列(第3列),就填3。
[匹配模式]——怎么匹配(可选):·
FALSE或0:精确匹配。没找到就返回错误值#N/A。这是最常用的。
TRUE或1:近似匹配。找最接近的值(通常用于查找等级,如根据分数找绩点)。
- VLOOKUP精确匹配
举个栗子🌰:我现在有一个班级的学生成绩表,我需要通过学号查找学生姓名并列出成绩单,学生成绩表在A1:E5区域,我们需要在A8:E9区域,以A9单元格的学号自动生成一个成绩表,如下图:
B9单元格公式:
=VLOOKUP($A9,$A$2:$E$5,COLUMN(B$1),FALSE)
公式拆解:
找什么:$A9(混合引用,锁定A列,这样向右拖动时始终引用A列的学号)
在哪找:$A$1:$E$5(绝对引用,锁定整个成绩表区域)
返回第几列:COLUMN(B$1)(返回2,向右拖动时变成COLUMN(C$1)=3,COLUMN(D$1)=4,COLUMN(E$1)=5,实现自动递增)
匹配条件:FALSE(精确匹配,确保找到对应学号)
- VLOOKUP近似匹配
上面讲了精确匹配了,那近似匹配是怎么回事呢?
近似匹配的工作逻辑是:从第一个开始匹配,在数据表首列(升序排列的前提下)查找小于或等于查找值的最大值,然后返回该行对应的结果。
听起来有点绕?其实它最适合做一件事:区间查找(比如根据分数评等级、根据销售额算提成等)。
注意,当使用近似匹配时,查询的数据表首列的数据必须是按从小到大的顺序,如果顺序不对,匹配的结果也会是有问题的。
继续举个栗子🌰:现在有一个分数评级表,需要对成绩进行评级如下图,那么B2单元格公式应该为:
=VLOOKUP($A2,$D$2:$E$5,2,TRUE)
注意啦,这里有一个非常重要的细节:为什么评级表的左边一列只写了分数下限,而不是把每个分数段都列全?
这正是近似匹配的精髓所在,它帮我们自动完成了“区间划分”的工作!
当查找79分时,VLOOKUP在升序的首列[0,60,80,90]中逐个比对。0<=79,继续;60<=79,继续;80<=79?不成立。此时,VLOOKUP会退回上一个符合条件的值(60),并返回其对应的‘及格’。
这时候就有人要问啦,我用VLOOKUP近似匹配是不是也可以查询文本呢?各位看官可以把这个问题交给WPS灵犀回答一下。
在问过WPS灵犀后,我得知的是可以使用近似匹配查询文本,但是不建议使用,很容易翻车。
到这里,总结一下使用近似匹配做区间查找时,必须遵守三条铁律:①首列必须升序排列;②首列必须是数值;③只写区间下限。
- VLOOKUP匹配模式
最后还有一个问题,不是说最后一个参数是可选吗,那如果我不写会怎么样?
我们还以分数评级距离,如下图是我输入对应公式的结果:
欸,怎么下面两个都没写参数,怎么结果还不一样呢?
有眼尖的朋友注意到了,关键在于:逗号!
情况1:写了逗号但没写参数→精确匹配
第4个参数的位置被保留(有个逗号在那等着)
Excel理解为:你明确要写参数,只是没填内容
结果:精确匹配(相当于FALSE)
情况2:完全没写逗号→近似匹配
第4个参数的位置完全不存在
Excel理解为:你省略了这个可选参数
结果:近似匹配(默认TRUE)
这个问题我们继续交给WPS灵犀,重点在下面了:
也就是说加逗号和不加逗号还有很大的区别,强烈建议在实际使用时把第四个参数写完整,才能更清楚知道是哪种匹配模式。
- VLOOKUP通配符匹配
很多人以为VLOOKUP只能做精确查找,其实它还支持通配符,可以实现各种模糊匹配!
关键点:第四参数必须是FALSE或0(精确匹配模式),通配符才能生效。
表格中支持的三个通配符:
通配符 | 名称 | 含义 | 通俗理解 |
* | 星号 | 代表任意多个字符 | 可代表任意数量的字符,包括0个 |
? | 问号 | 代表任意单个字符 | 只能代表1个字符,不能多不能少 |
~ | 波浪号 | 转义符 | 放在其他通配符前,将其变成普通字符 |
我们举个例子就知道了,现在我们需要从一个产品列表中找出红色的产品,如下图:
A9单元格公式:
=VLOOKUP("*红色*",$B$2:$B$5,1,FALSE)
公式拆解:
找什么:"*红色*"(前后可以有任意字符,只要包含“红色”)
在哪找:$B$2:$B$5(在产品名称列中查找)
返回第几列:1(返回第1列,即产品名称)
匹配条件:FALSE(精确匹配模式,通配符查询必须是精确匹配)
最后得到结果:红色连衣裙
有好奇宝宝就要问了,红色T恤也有红色,为什么没有显示了,这是因为VLOOKUP函数只返回第一个遇到符合条件的值,如果是逆序查找就会返回红色T恤。
当需要查询的文本本身就含有*和?时,则需要在符号前面添加转义字符~,及~*、~?和~~,告诉WPS,~后面的符号不要当成通配符,要当作普通符号。
2️⃣HLOOKUP——被遗忘的查询函数,VLOOKUP的同胞兄弟
HLOOKUP和VLOOKUP是双胞胎兄弟,长得一模一样,就是方向不同。看看它需要填写的四个参数:
=HLOOKUP(查找值,数据表,行序数,[匹配条件])
与VLOOKUP函数相比,不一致的在第三个参数——行序数,这就是为什么说他俩是双胞胎兄弟了。它的作用是在数据表区域的首行中搜索某个特定的值,然后返回该列中指定列的数据。
行序数——返回第几行:你要返回的数据在查找区域中的第几行。例如,区域从2行开始,你要返回4行(第3行),就填3。
其他参数参照VLOOKUP部分的讲解,注意查找值必须位于数据表的第一行。
- HLOOKUP精确匹配
日常工作中遇到的多数是纵向表格数据,因此HLOOKUP用的较少,但是两者在使用时高度相似,这里举一个简单的例子。
如下表是某门店上半年的销售数据(数据区域在A1:F2):
月份 | 1月 | 2月 | 3月 | 4月 | 5月 | 6月 |
销售额 | 8500 | 9200 | 7800 | 10300 | 8900 | 9000 |
现在我想查询3月份的销售额是多少,则写的公式为:
=HLOOKUP("3月",B1:G2,2,FALSE)
返回结果:7800
公式拆解:
找什么:"3月"——在首行查找这个月份
在哪找:B1:G2——整个报表区域
返回第几行:2——销售额在第2行,返回对应的值
匹配条件:FALSE——精确匹配
从这里可以看出,与VLOOKUP的区别就是数据表为横向查找,查找的内容需要在数据表的第一行。鉴于你看到这里已经学会了VLOOKUP,相信你到这里也就学会了HLOOKUP,不再重复介绍近似匹配。
- VLOOKUP与HLOOKUP的局限性
单向查找:查找值只能在首行/列,查询只能向右/下
硬编码:当列/行序数为数字定位时,输入或删除数据表的行/列后返回值会错乱
只能返回单行/列数据:每次只能返回一列/行数据,需要多个结果需要写多个公式
精确匹配找不到就报错:精确匹配找不到时直接返回错误值#N/A,需要嵌套IFERROR才可自定义
近似匹配要求严格:升序是铁律
不能处理多条件查询
通配符支持有限:仅支持基本的通配符*和?
下期预告:XLOOKUP与LOOKUP函数
WPS寻令官