第六章 Excel函数-查找函数#

VLOOKUP是经典的查找与引用函数,在Excel数据查询任务中有多种用途。XLOOKUP作为Excel开发的最新查找函数,在使用便利性上远超VLOOKUP函数,因此如果是能支持XLOOKUP函数,非常推荐大家使用XLOOKUP函数,如果自己的电脑Excel不是最新版不支持XLOOKUP函数,也可以来学习VLOOKUP函数。

在本节教程中会重点介绍XLOOKUP函数的相关用法,对于VLOOKUP不好解决,XLOOKUP能解决的问题放在了【案例5】、【案例6】、【案例7】

1.VLOOKUP#

案例1#

打开文件data/chap6/6.1xlsx,点击【案例1】,根据岗位编号,得到该员工的应发工资

针对这个问题,可以使用VLOOKUP函数

【VLOOKUP函数】=VLOOKUP(要查找的值,查找区域,要返回的结果在查找区域的第几列,精确匹配或近似匹配)

在L3单元格中输入如下公式

=VLOOKUP(K2,A2:H50,8,FALSE)

因为应发工资在整个单元格中的第8列,所以第3个参数为8,第4个参数选择TRUE或者FALSE,TRUE为模糊匹配,FALSE为精确匹配,因此第4个参数选择为FALSE, 有的EXCEL版本第4个参数是0是精确查找,1是精确匹配,根据实际情况输入即可。

案例2#

打开文件data/chap6/6.1xlsx,点击【案例2】,根据岗位编号,得到该员工的应发工资

在案例2的任务中我们发现,这里的员工的编号位于最后一列,那么应该如何处理呢?

如果按照正常的VLOOKUP的函数用法在L2单元格输入=VLOOKUP(K2,A2:H19,7,FALSE),输入后会发现并没有安装预期得到应发工资。

这是因为VLOOKUP函数的限制,必须查找的区域在被查找值的左侧,当然这里有其他的办法解决。

这里用到了换列的小技巧,如果感兴趣可以看相关文章,Excel技巧:一文搞懂 IF{1,0} 的用法

那么在L2中输入如下函数

=VLOOKUP(K2,IF({1,0},H2:H19,G2:G19),2,FALSE)

这个函数中,将G2:G17列与H2:H19列做成了一个临时数据组,并让这2列交换位置,这样G2:G19列就在临时数组中的第2列,因此VLOOKUP中第3个参数为2

案例3#

打开文件data/chap6/6.1xlsx,点击【案例3】,根据性别与部门信息,获得员工编号

案例3的任务与前面不同的是,无法只通过1个信息完全定位到员工编号,因此这里使用了一个技巧,在L3单元格中输入

=VLOOKUP(J2&K2,IF({1,0},C2:C20&D2:D20,A2:A20),2,0)

细心的同学可能发现了其中的技巧,就是将多个条件通过&连接成一个字符串,同时将待查找的数据也连接起来,从而通过这个连接的特殊字符来查找数据

案例4#

打开文件data/chap6/6.1xlsx,点击【案例4】,当不知道具体的信息,需要进行模糊查询

那么如何使用VLOOKUP进行模糊查询呢?

=VLOOKUP(“*”&K2,A2:F20,2,0)

Excel中的通配符匹配规则见如下,因为DW为2个字符,我们选择*

还记得第四章中的SUMIFS函数中的案例,计算小米系列的销量中,我们就使用了通配符

2 XLOOKUP#

XLOOKUP作为Excel开发的最新查找函数,在使用便利性上远超VLOOKUP函数,因此如果是能支持XLOOKUP函数,非常推荐大家使用XLOOKUP函数,如果不能支持这个函数也不用灰心,使用VLOOKUP函数也能完成绝大多数查询问题

因为XLOOKUP函数功能非常强大,因此在本节中对函数进行讲解

【XLOOKUP函数】==XLOOKUP(想要查找值, 想要在哪个数据区域中查找, 要返回的数据区域,, [ifnotfound], [matchmode], [searchmode])

第四参数(可选参数):ifnotfound,找不到结果,就返回第四参数,如果省略第四参数函数默认返回#N/A这个错误值

第五参数(可选参数):match_mode,指定匹配类型

参数为:0 ,精确匹配,未找到结果,返回 #N/A。 这是默认选项。

参数为:-1,近似匹配,未找到结果,返回下一个较小的项。

参数为:1,近似匹配,未找到结果,返回下一个较大的项。

参数为:2 ,通配符匹配

第六参数(可选参数):search_mode, 指定要使用的搜索模式

参数为:1,从第一项开始执行搜索。 这是默认选项。

参数为:-1,从最后一项开始执行反向搜索。

参数为:2,根据 lookup_array 按升序排序的二进制搜索。 如果未排序,将返回无效结果。

参数为:-2,根据lookup_array 按降序排序的二进制搜索。 如果未排序,将返回无效结果。

案例1#

打开文件data/chap6/6.1xlsx,一起来实现【案例1】

我们在M2单元格中输入如下公式

=XLOOKUP(K2,A1:A50,H1:H50)

第1个K2 就是需要查询的岗位编号DW0005

第2个参数为A1:A50,也就是要查哪一列,细心的同学已经注意到这里与VLOOKUP的不同

第3个参数就是需要返回的哪一列,也就是返回H列

案例2#

打开文件data/chap6/6.1xlsx,一起来实现【案例2】

我们在L2单元格中输入如下公式

=XLOOKUP(J2,H1:H19,G1:G19)

细心的同学就发现上面的公式中没有用到列的转换,这个公式的可读性非常强,这是就是XLOOKUP比VLOOKUP更加强大的地方

案例3#

打开文件data/chap6/6.1xlsx,一起来实现【案例3】

我们在M2单元格中输入如下公式

=XLOOKUP(J2&K2,C1:C20&D1:D20,A1:A20)

在XLOOKUP中的多条件查找,只需要使用&,将多个条件的信息连接起来即可,非常的方便

案例4#

打开文件data/chap6/6.1xlsx,一起来实现【案例4】

我们在M2单元格中输入如下公式

=XLOOKUP(“*”&K2,A2:A20,B2:B20,,2)

在使用XLOOKUP进行通配符查找事,需要指定第5个参数为2,即告诉XLOOKUP需要用通配符进行查找,这里是好VLOOKUP不同的地方

具体通配符用法,可见1.4的讲解

案例5#

打开文件data/chap6/6.1xlsx,一起来实现【案例5】,姓名6在数据表中出现了2次,想知道他的最后销售额应该怎么操作?

我们在I2单元格中输入如下公式

=XLOOKUP(H2,B1:B20,F1:F20,0,0,-1)

前3个参数想必大家已经很熟悉了,第4个参数是0,就是当XLOOKUP查找不到时,就返回0,第5个参数是0,就是选择精确匹配,第6个参数选择搜索参数,这里选择-1,从后开始往前搜索,因此这样设置就能获得正确结果。

案例6#

打开文件data/chap6/6.1xlsx,一起来实现【案例6】,这里有4个人,现在想知道这4个人的最大销售额

=MAX(XLOOKUP(H2:H5,B2:B20,F2:F20,0,0,1))

先通过XLOOKUP批量查找这4个人销售额,再通过MAX函数,求这4个人中的最大的销售额。

案例7#

打开文件data/chap6/6.1xlsx,一起来实现【案例7】,当数据集以横向形式时,如果查询到需要的数据

在C2单元格中输入如下公式

=XLOOKUP(B6,B2:L2,B1:L1)

细心的同学发现,横向数据的查询方法与纵向数据并无太大区别

练习#

1.选择VLOOKUP和XLOOKUP这2种函数中的一种,完成data/chap6/6.1xlsx中的【案例1-4】