一对多查询的4种解法,你最喜欢哪一种?
就是当一个查询值对应多笔记录时,怎么才气把这些记录全部提取出来呢?
如下图所示,是多个部分的员工信息。
此刻,咱们要按部分提取出对应的姓名。
解法1:VLOOKUP+帮助列单击A列的列标,然后右键→插入,插入一个空缺列。
在A2单位格输入公式,向下复制。
=B2&COUNTIF($B$1:B2,B2)
这一步的浸染,相当于在各个部分名称后加上了序号。
最后在H2单位格中输入公式:
=IFERROR(VLOOKUP($G2&COLUMN(A1),$A:$E,3,0),””)
查询内容后头加上&COLUMN(A1)获得的序号,和A列的部分+序号相呼应。
假如找不到部分+序号,就用IFERROR函数返回空文本。
假如你利用的是Office 365可能是Office 2021,公式就简朴多了,抖客教程网,G2单位格输入以下公式,向下拖动即可:
=TRANSPOSE(FILTER(B2:B14,A2:A14=F2))
FILTER函数按照指定的条件A2:A14=F2,在B$2:B$14单位格区域中提取出切合条件的姓名。
再利用TRANSPOSE函数把垂直的内存数组转换为程度偏向。
以下数组公式在各个Excel版本中通用:
=INDEX($C:$C,SMALL(($B$2:$B$14<>$G2)/1%%+ROW($2:$14),COLUMN(A1)))&””
公式的大抵意思是,假如$B$2:$B$14不便是$F2,就将行号放大10000倍,不然返回切合条件的行号。
再利用SAMLL函数从小到大依次提取出行号。最后由INDEX函数按照提取出的行号,返回C列中对应位置的内容。
练手文件:
https://pan.baidu.com/s/18Z5uuDAwNg2e0t0W1cCwog
AD:【[告白]跟浩瀚微软MVP一起学Office】点击插手吧!