当前位置: 欣欣网 > 办公

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

2024-02-25办公

小伙伴们好啊,今天和大家说说一对多查询的问题。

就是当一个查询值对应多条记录时,如何才能把这些记录全部提取出来呢?

如下图所示,是多个部门的员工信息。

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

方法1:VLOOKUP+辅助列

单击A列列标,右键→插入,插入一个空白列。

在A2单元格输入公式,向下复制。

=B2&COUNTIF($B$1:B2,B2)

在H2单元格中输入公式,向右向下复制:

=IFERROR(VLOOKUP( $G2&COLUMN(A1) , $A:$E ,3,0),"")

方法2: FILTER 函数

如果你使用的是最新的WPS表格或者是Office 2021,只要在H2单元格输入以下公式,向下拖动即可:

=TRANSPOSE(FILTER(C$2:C$14,B$2:B$14=G2))

先使用 FILTER 函数,根据指定的条件 B $2:B$14=G2 ,在 C$2:C$1 4 单元格区域中提取出姓名。

然后使用 TRANSPOSE 函数把垂直的内存数组转换为水平方向。

方法3:数组公式

除此之外,还可以使用数组公式:

=INDEX($C:$C,SMALL(($B$2:$B$14<>$G2)/1%%+ROW($2:$14),COLUMN(A1)))&""

这个公式的大致意思是,如果 $B$2:$B$14不等于$G2,就将行号放大10000倍,否则返回符合条件的行号。

再使用SAMLL函数从小到大依次提取出行号。

最后由INDEX函数根据提取出的行号,返回C列中对应位置的内容。

这个公式的缺点是编辑复杂,运行效率低,优点是可以在任意版本中使用。

方法4:

李秘书,你来一下……

好了,今天咱们的内容就是这些吧,祝各位一天好心情~~

练手文件:

https://pan.baidu.com/s/18Z5uuDAwNg2e0t0W1cCwog

图文制作:祝洪忠