救急成功!多亏了一对Excel多查询的这些套路

来自:Excel技巧精选(微信号:ExcelSkill),作者:帮主 

前天晚上帮主正酣睡时,突然被一通电话扰乱了美梦。原来是远在千里之外的老同学求救来了。看在多年交情的份上,帮主二话不说打开电脑进行救急行动,很快解决了问题。


今天帮主特地列举了一个类似案例进行讲解分享,希望让更多有需要的伙伴了解一对多查询的套路。


如下图,是一个简单的销售明细表,我们需要进行一对多的查询。



下面帮主跟大家介绍两种一对多查询的套路:


1、VLOOKUP函数结合辅助列


首先我们添加辅助列,在A2单元格中输入公式:=B2&COUNTIF($B$2:B2,B2)


这里我们主要利用COUNTIF这个计数函数来创建相同销售区域的序号,具体操作如下动图:



接下来利用VLOOKUP结合IFERROR函数实现查询结果,在G2单元格中输入公式:=IFERROR(VLOOKUP($F$2&ROW(A1),$A:$D,COLUMN(C1),0),"")


这里我们其实是变通了一下VLOOKUP函数的第一个参数,$F$2&ROW(A1):查询值加上不同的序号。具体操作如下动图:



2、INDEX+SMALL+IF+ROW函数嵌套


在F2单元格中输入公式:

=INDEX(B:B,SMALL(IF($A$1:$A$11=$E$2,ROW($A$1:$A$11),4^8),ROW(A1)))&"",向下、向右进行填充即可。具体操作如下动图:



说明:


  • SMALL函数用来定位所有E2在A列中的位置(从小到大)

  • 4^8这里指的是一个比较大的数,在这个IF函数公式中,如果单元格区域A1:A11的值等于E2,就显示E2在A列中所在的行号,如果不等于就显示一个较大的数

  • 当我们利用SMALL函数得到行号之后,结合INDEX函数一对多查找需要的值

  • 最后的&""是用来进行容错处理,整个公式拖动时如果没有匹配值的话就用空白单元格来替代


好了,上面这两种一对多查询套路就是帮主今天要和大家分享的内容,公式相对较长,尤其第二种方法,不过仔细拆开来看还是比较容易理解的。如果真的一时理解不来或记不住,那就收藏备用啦,遇到问题直接套用也未尝不可,毕竟大半夜叫醒别人来江湖救急不是个好习惯呀!


推荐↓↓↓
Excel技巧精选