Excel一对多查询

yumo6666个月前 (05-18)技术文章46

当一个查询值对应多条记录时,如何才能把这些记录全部提取出来呢?今天咱们就一起说说一对多的数据查询问题。

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

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


解法1:VLOOKUP+辅助列

第一步

插入辅助列(看着不爽可隐藏)

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

第二步

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

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

COUNTIF函数第一参数使用动态扩展的范围$B$1:B2,当公式向下复制时,会依次变成$B$1:B3、$B$1:B4……,也就是自B1单元格开始到公式所在行这个范围内,统计B列部门出现的次数。

再使用&符号,将B列的部门与出现的次数连接,就是相当于给部门加上唯一的标记了。

第三步

在H2单元格中输入公式:

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

接下来咱们说说公式的运算过程:

1、COLUMN(A1)部分,返回A1的列号1。当公式向右复制时,参数A1会变成B1、C1……,COLUMN函数的结果就是1、2、3、……

2、用$G2&COLUMN(A1)作为VLOOKUP函数的查询值,相当于给G2的部门加上了序号信息,公式在H2单元格中查询的是“安监部1”,在I2单元格中,查询的就是“安监部2”,在J2单元格中,查询的就是“安监部3”。

3、VLOOKUP函数使用带序号的部门作为查询值,与刚刚在A列使用公式得到的辅助信息相对应,最终在$A:$E这个整列引用的范围中,返回第3列的姓名信息。

4、当VLOOKUP函数查找不到对应的内容时,会返回错误值,所以咱们再使用IFERROR函数进行除错,如果VLOOKUP函数找不到姓名了,就让他返回一个空文本。


解法2:FILTER函数

如果你使用的是Office 365或者是Office 2021,公式就简单多了,H2单元格输入以下公式,向下拖动即可:

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

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

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


解法3:万金油公式

如果你还没有那么高的Excel版本,可以使用下面这个模式化的数组公式:

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

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

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

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


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


图文制作:祝洪忠

相关文章

一文搞懂 Excel COLUMN 函数,工作效率翻倍

大家在日常使用 Excel 时,难免会碰上需要跟列号打交道的情况,这个时候,COLUMN 函数就能大显身手啦!别看它名字简单,作用可不小。今天就来给大家唠唠,怎么用好这个函数,让你的数据处理工作轻松不...

Vlookup+Column公式组合,强强联手,你会么?

Vlookup公式在日常工作中,天天用到,搭配column函数公式,如虎添翼的加强,今天分享2个自由搭配的技巧1、Vlookup不想数结果列在第几列工作中,表格经常是字段特别多,然后我们需要查找匹配的...

Vlookup搭配Column公式精讲,一次性匹配多列,你会么

工作中,经常需要用到VLOOKUP查找公式,有时候还需要一次性的匹配多列值,举个例子,左边是员工工资表数据,现在需要根据姓名,把员工信息全部匹配出来 1、VLOOKUP+COLUMN法当我们需要查找匹...

解锁Excel隐藏技能!COLUMN函数带你飞!

哈喽大家好!我是你们的Excel小助手!今天要给大家带来一个超级实用又简单的函数——COLUMN 函数! 它可以轻松获取单元格的列号,简直就是表格整理的秘密武器! 想知道怎么用?赶紧往下看!COLUM...

获取列号函数COLUMN的应用技巧

COLUMN函数属于Excel表格中查找与引用类别函数,作用获取给定给定字段或引用单元格的列号。COLUMN函数属性:语法结构COLUMN([referencel])中文表达式COLUMN(参照区域)...

Excel公式:行(ROW)、列(COLUMN)及Vlookup函数的使用

一、ROW函数含义:返回引用的行号。即通过ROW函数来获取所在行的行号数据。使用方法:1、ROW() 直接ROW后面加空括号,注意是英文半角字符。 2、ROW(A1) 在空括号中写指定的单元格,如A...