牛哥课堂-函数实例应用之一对多查询!

 

牛哥课堂,跟着牛哥来做函数实例运用...

文/牛哥


对于看过我们公众号文章的小伙伴们来说,一对一查询匹配问题,无论是正向查询、逆向查询、区间查询、模糊查询等想必大家已经能轻松的解决了,而VLOOKUP函数是不能直接解决一对多查询匹配问题的,今天就给大家带来一个典型的一对多查询匹配问题的解决方法。
要求根据B~C列的销售数据依次找出销售员牛哥的所有销售额,如图中E~F列所示。
方法一:“VLOOKUP+辅助列”解法

A3单元格公式为:=B3&COUNTIF($B$3:B3,B3)

F3单元格公式为:=VLOOKUP($E$3&ROW(A1),$A$2:$C$12,3,0)
公式解析:由于B列的销售员有重复,因此这里不可以直接用VLOOKUP函数来查询匹配,通过A列建立辅助列,利用B列连接COUNTIF函数,构建一个姓名+第几次出现的数字的辅助列,这样构建的辅助列就没有重复值了,这样在利用VLOOKUP函数精确查找,就可以查询销售员牛哥的所有销售额。这里需要注意的是COUNTIF函数的范围上限需要绝对引用,这样才能得出B列销售员第几次出现的准确数字。

方法二:“万金油”解法

F2单元格公式为:

=IFERROR(INDEX(C:C,SMALL(IF($B$3:$B$12=$E$3,ROW($B$3:$B$12)),ROW(A1))),"")

这是一个数组公式,需要同时按Ctrl+Shift+Enter结束输入。

公式解析:

1、 IF($B$3:$B$12=$E$3,ROW($B$3:$B$12)):

这里通过IF函数来判断原数据中每一行的销售员是否等于要查找的销售员“牛哥”,如果等于则范围原数据区域的行号,否则返回错误值,结果为一列数字和错误值组成的数组{FALSE;FALSE;5;FALSE;7;FALSE;9;FALSE;FALSE;12};

2、 SMALL(IF($B$3:$B$12=$E$3,ROW($B$3:$B$12)),ROW(A1)):

用SMALL(…,ROW(A1))依次取出上面IF函数得到的满足查找条件的数据区域中销售员为牛哥每一行的行号;

3、 INDEX(C:C,SMALL(…)):

利用INDEX函数分别依次返回满足查找条件的数据区域中销售员为牛哥的每一行对应的销售额;

4、IFEROROR(INDEX(…),"")

容错函数,前面已经介绍很多次了,这里不再赘述了。

小伙伴们学会了吗?第二个解法是一个经典套路,希望大家能牢记,如果对这个套路不理解也没有关系,记住它的用法,自己用的时候修改数据范围就可以了。两种方法,不一样的思路,一样的结果,条条大路都可以直通罗马哦!

如果大家对文章中有不理解的地方或者有其他有兴趣的问题,都欢迎大家在评论区留言。

关注成长课堂,我们会持续输出实战干货哦,欢迎推荐给您身边的朋友和同事。
———— / END / ————


    关注 Excel成长课堂


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册