大家好,当我们使用函数查找数据时,遇到重复的值,函数只会返回第一个找到的结果,但是在日常工作中我们经常要根据一个值查找多个结果。 这时候已经不能满足我们的需求了。 今天给大家分享一下如何在excel中实现一对多查询。
如下图,我们想把同一个部门的人按照部门排成一排。 我们只需点击表格中的第一个单元格并输入公式即可
=(索引($B:$B,小(IF($A:$A=$F2,ROW($A:$A)),(A1))),"")&""
按ctrl+shift+enter并将公式向右和向下拖动即可快速完成。 这里我们通过搜索部门快速返回多个结果。
下面我来详细解释一下如何理解这个公式。 这里我们使用数组公式来完成查找。 该函数以索引函数为主体返回结果。
索引功能
第一参数:$B:$B,就是我们要返回的结果列 第二参数:SMALL(IF($A:$A=$F2,ROW($A:$A)),COLUMN(A1))),使用small函数来获取查找值的具体位置
这里我们主要了解一下小功能。 Small函数的作用是返回一组数据中从小到大的第n个值。 它有两个参数。 第一个参数:数据区,第二个参数:数据区。 位置(从小到大)
这里公式中Small函数的参数为
第一个参数: IF($A:$A=$F2,ROW($A:$A))
第二个参数:(A1))
在 IF($A:$A=$F2,ROW($A:$A)) 中,我们使用 if 函数判断 A 列的数据是否等于单元格 f2,即行政部门,如果数据在 a 列中,如果单元格等于行政部门,则让函数返回等于行政部门位置的行号。 这里我们省略了if函数的第三个参数。 当条件不正确时,该函数将返回 false。 其结算结果如下
因为小函数会自动忽略错误的结果,所以小函数的第一个参数现在只包括3、5、7、9、17这5个数据,因为我们是在行方向拖动数据,所以我们使用(A1))构造一个从1开始的序列,这样我们就可以分别提取这5个列号,并将提取的列号作为index的第二个参数返回对应的结果。
然后我们使用屏蔽错误值,最后使用公式末尾的链接符号链接一个空值,以防止当我们的搜索值为空时函数返回0。
以上就是index+small+if函数的计算过程。 这个怎么样? 你学会了吗?