
接上篇《EXCEL一对多查找引用操作_员工重名》,今天看下如何做部门成员列表:

与上篇方法相同,造一个辅助列,让部门不重复。插入A列,命名为“*部门”。
A2=B2&COUNTIF(B$2:B2,B2)

然后还是用VLOOKUP函数。要做的是在I2写好公式再右拉复制,肯定还是要用到ROW或COLUMN了,但是怎么用这里要想一下。查找值是“采购部1”、“采购部2”等等,而且是右拉出来的,用ROW就不合适了(横向拉动行号不变),所以得用COLUMN。另外,查找的列也固定,是C列,即区域内第3行。所以公式为:
I2=IFERROR(VLOOKUP($H2&COLUMN(A1),$A:$C,3,FALSE),"")
右拉、下拉复制公式。

这里我们还是节奏慢一点。先找到部门对应的行号(不等于的留空):
H2=IF($A$2:$A$21=$G2,ROW($A$2:$A$21),"")
//此为数组公式,低版本EXCEL录入后,要按组合键Ctrl+Shift+Enter完成输入,下同

有了行号,还要逐个取数,用SMALL函数,取第1、2、3、4、5小的行号
H2=SMALL(IF($A$2:$A$21=$G2,ROW($A$2:$A$21),""),COLUMN(A1))

再用INDEX来取回第一个值
H2=INDEX($B:$B,SMALL(IF($A$2:$A$21=$G2,ROW($A$2:$A$21),""),COLUMN(A1)),)
*INDEX第三参数包括逗号","都舍去效果也一样
H2=INDEX($B:$B,SMALL(IF($A$2:$A$21=$G2,ROW($A$2:$A$21),""),COLUMN(A1)))

部门人数少的会出错,所以再套个IFERROR,最终公式为:
H2=IFERROR(INDEX($B:$B,SMALL(IF($A$2:$A$21=$G2,ROW($A$2:$A$21),""),COLUMN(A1)),),"")

想到的还是FILTER函数,先找一个人多的部门试试,比如销售部:
H9=FILTER($B$2:$B$21,$A$2:$A$21=$G9)
直接出来个姓名,不过是竖着的,得转成横向的。外面直接套TRANSPOSE函数:
H9=TRANSPOSE(FILTER($B$2:$B$21,$A$2:$A$21=$G9))
这下可以了,上拉、下拉复制即可,不用右拉。
