http://www.pptjcw.com

一对多查询的4种解法,你最喜欢哪一种?

    就是当一个查询值对应多条记录时,如何才能把这些记录全部提取出来呢?
    如下图所示,是多个部门的员工信息。

    一对多查询的4种解法,你最喜欢哪一种?

    现在,咱们要按部门提取出对应的姓名。

    一对多查询的4种解法,你最喜欢哪一种?

    解法1:VLOOKUP+辅助列

    单击A列的列标,然后右键→插入,插入一个空白列。
    在A2单元格输入公式,向下复制。
    =B2&COUNTIF($B$1:B2,B2)

    一对多查询的4种解法,你最喜欢哪一种?

    这一步的作用,相当于在各个部门名称后加上了序号。

    最后在H2单元格中输入公式:
    =IFERROR(VLOOKUP($G2&COLUMN(A1),$A:$E,3,0),””)

    一对多查询的4种解法,你最喜欢哪一种?

    查询内容后面加上&COLUMN(A1)得到的序号,和A列的部门+序号相呼应。
    如果找不到部门+序号,就用IFERROR函数返回空文本。

    解法2:FILTER函数

    如果你使用的是Office 365或者是Office 2021,公式就简单多了,G2单元格输入以下公式,向下拖动即可:
    =TRANSPOSE(FILTER(B2:B14,A2:A14=F2))

    一对多查询的4种解法,你最喜欢哪一种?

    FILTER函数根据指定的条件A2:A14=F2,在B$2:B$14单元格区域中提取出符合条件的姓名。
    再使用TRANSPOSE函数把垂直的内存数组转换为水平方向。

    解法3:万金油公式

    以下数组公式在各个Excel版本中通用:
    =INDEX($C:$C,SMALL(($B$2:$B$14<>$G2)/1%%+ROW($2:$14),COLUMN(A1)))&””

    一对多查询的4种解法,你最喜欢哪一种?

    公式的大致意思是,如果$B$2:$B$14不等于$F2,就将行号放大10000倍,否则返回符合条件的行号。
    再使用SAMLL函数从小到大依次提取出行号。最后由INDEX函数根据提取出的行号,返回C列中对应位置的内容。

    练手文件:
    https://pan.baidu.com/s/18Z5uuDAwNg2e0t0W1cCwog

    AD:【[广告]跟众多微软MVP一起学Office】点击加入吧!

    提示:如果您觉得本文不错,请点击分享给您的好友!谢谢

    上一篇:将多列的区域或数组合并成一列,就用TOCOL函数 下一篇:从混合内容中提取中文、英文和数字

    郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。