首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

这次教程有点难,实现一对多查询,这或许是最经典的方法了

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

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

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

按ctrl+shift+回车向右向下拖拉公式即可快速完成,在这里我们就是通过查找部门来快速的返回多个结果

下面跟大家详细的讲解下这个公式是如何理解在,在这里我们利用数组公式来完成查找的,函数是以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,他的结算结果如下图

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

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

以上就是这个index+small+if函数的计算过程,怎么样,你学会了吗?

我是excel从零到一,关注我持续分享更多excel技巧

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191012A032XZ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券