类别:office / 日期:2021-06-09 / 浏览:861 / 评论:0

Hello,大家好,当我们使用vlookup函数查找数据遇到重复值得时候,函数仅仅会返回第一个查找到的结果,但是在日常的工作中我们经常要根据一个值来查找到多个结果,这个时候vlookup函数就不能满足我们需求了,今天就跟大家分享下在excel中如何实现一对多查询。

如下图,我们想要根据班别,将相同班别的人都放在一行中,只需要点击表格中的第一个单元格,输入公式:

=IFERROR(INDEX($A:$A,SMALL(IF($B:$B=$D2,ROW($B:$B)),COLUMN(A1))),"")&""

ctrl+shift+回车后,再向右向下拖拉公式即可快速完成,在这里我们就是通过查找部门来快速的返回多个结果。(注意:是按ctrl+shift+回车组合键,不是只按回车键!不是只按回车键!不是只按回车键!

image.png

------------------------------------------------------------

下面跟大家详细的讲解下这个公式是如何理解在,在这里我们利用数组公式来完成查找的,函数是以index函数为主体来返回结果,

Index函数

第一参数:$A:$A,就是我们要返回的结果列

第二参数:SMALL(IF($B:$B=$D2,ROW($B:$B)),COLUMN(A1)),使用small函数来获取查找值的具体位置

在这里我们主要来理解下small函数,small函数的作用是返回一组数据中从小到大的第n个值,他的参数一共有两个,第一参数:数据区域,第二参数:数据区域的位置(从小到大)

在这里Small函数在公式中的参数为

第一参数:IF($B:$B=$D2,ROW($B:$B))

第二参数:COLUMN(A1))

IF($B:$B=$D2,ROW($B:$B))中,我们使用if函数来判断B列的数据是不是等于D2单元格,也就是一年级,如果B列的单元格等于一年级就让函数返回等于一年级位置的行号,在这里我们省略了if函数的第三参数,当条件不正确的时候函数就会返回false,他的结算结果如下图

image.png

因为small函数会自动将false这个结果忽略掉,所以现在small函数的第一参数仅仅包括2,3,6,这3个数据。因为我们在行方向上拖动数据的,所以我们使用COLUMN(A1))来构建一个从1开始的序列,这样的话我们就能分别将这3个列号提取出来,将提取出来的列号作为index的第二参数来返回对应的结果

然后我们使用IFERROR来将错误值屏蔽掉错误值,最后在公式的最后使用连接符号连接上一个空值,是为了避免当我们的查找值为空的时候函数返回0

以上就是这个index+small+if函数的计算过程。

打赏

感谢您的赞助~

打开支付宝扫一扫,即可进行扫码打赏哦~

版权声明 : 本文未使用任何知识共享协议授权,您可以任何形式自由转载或使用。

 可能感兴趣的文章