详解index+small+if一对多查询,或许有点难,但真的很实用

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

详解index+small+if一对多查询,或许有点难,但真的很实用

如下图,我们想要根据部门,将相同部门的人都放在一行中,只需要点击表格中的第一个单元格 , 输入公式
=IFERROR(INDEX($B:$B,SMALL(IF($A:$A=$F2,ROW($A:$A)),COLUMN(A1))),"")&""
按ctrl shift 回车向右向下拖拉公式即可快速完成,在这里我们就是通过查找部门来快速的返回多个结果
详解index+small+if一对多查询,或许有点难,但真的很实用

下面跟大家详细的讲解下这个公式是如何理解在,在这里我们利用数组公式来完成查找的 , 函数是以index函数为主体来返回结果,
Index函数
第一参数:$B:$B , 就是我们要返回的结果列第二参数:SMALL(IF($A:$A=$F2,ROW($A:$A)),COLUMN(A1))),使用small函数来获取查找值的具体位置
在这里我们主要来理解下small函数,small函数的作用是返回一组数据中从小到大的第n个值,他的参数一共有两个,第一参数:数据区域,第二参数:数据区域的位置(从小到大)
在这里Small函数在公式中的参数为
第一参数:IF($A:$A=$F2,ROW($A:$A))
第二参数:COLUMN(A1))
在IF($A:$A=$F2,ROW($A:$A))中,我们使用if函数来判断A列的数据是不是等于f2单元格 , 也就是行政部,,如果a列的单元格等于行政部就让函数返回等于行政部位置的行号 , 在这里我们省略了if函数的第三参数,当条件不正确的时候函数就会返回false,他的结算结果如下图
详解index+small+if一对多查询,或许有点难,但真的很实用

【详解index small if一对多查询,或许有点难,但真的很实用】因为small函数会自动将false这个结果忽略掉,所以现在small函数的第一参数仅仅包括3,5 , 7,9,17 , 这5个数据,因为我们在行方向上拖动数据的,所以我们使用COLUMN(A1))来构建一个从1开始的序列 , 这样的话我们就能分别将这5个列号提取出来,将提取出来的列号作为index的第二参数来返回对应的结果
详解index+small+if一对多查询,或许有点难,但真的很实用

然后我们使用IFERROR来将错误值屏蔽掉错误值 , 最后在公式的最后使用链接符号链接上一个空值,是为了避免当我们的查找值为空的时候函数返回0
以上就是这个index small if函数的计算过程,怎么样 , 你学会了吗?
我是excel从零到一,关注我持续分享更多excel技巧

相关经验推荐