我有一个很大的矩阵,其中有两个不同的文档(内部和外部),其中包含公司中的所有员工(超过1500名),我创建了一个新文档,我想使用该文档仅包含有关员工的特定信息输入他的员工编号。
我可以获得所有特定信息,例如:姓名,保险号码,工作区域等。但是问题是,当我尝试获得他已完成的课程(因为有多个结果)时,它的评分为10- 20个结果,我需要显示所有课程,而不仅仅是第一门课程,例如使用VLOOKUP公式时。
名称课程日期状态
答案 0 :(得分:0)
对此已在this post的exceljet.net上进行了研究。为避免链接腐烂:
通用公式
{=INDEX(array,SMALL(IF(vals=val,ROW(vals)-ROW(INDEX(vals,1,1))+1),nth))}
说明
要使用INDEX和MATCH获得第n个匹配项,您可以使用使用IF和SMALL函数计算匹配项行号的数组公式。
在所示示例中,I7中的公式为:
{=INDEX(amts,SMALL(IF(ids=id,ROW(ids)-ROW(INDEX(ids,1,1))+1),H6))}
其中命名范围是ams(D4:D11),id(I3)和id(C4:C11)。
请注意,这是一个数组公式,必须使用 Control + Shift + Enter 输入。
我做了更多工作,得到了下面的内容。请注意,我通过使用“插入”>“表”将原始数据(列A,B和C)转换为“表1”,并且标题的命名很有用。
A B C D E F
3 looking for: Bill
4
5 Name debt currency nth Debts In...
6 Bill 50 USD 1 50 USD
7 Bill 49 EU 2 49 EU
8 Susan 100 USD 3 51 EU
9 Charles 100 LI 4 30 WON
10 Bill 51 EU 5
11 Bill 30 WON 6
...这是公式:
debts
=IFERROR(INDEX(Table1[debt],SMALL(IF(Table1[Name]=$F$3,ROW(Table1[Name])-ROW(INDEX(Table1[Name],1,1))+1),$D6)),"")
in...
=IFERROR(INDEX(Table1[Currency],SMALL(IF(Table1[Name]=$F$3,ROW(Table1[Name])-ROW(INDEX(Table1[Name],1,1))+1),$D6)),"")
请注意,$ D6用于增加每一行(即$ D7,$ D8等)。
请确保使用ctrl-shift-enter完成键入方程式,以便数组公式起作用!您会知道这是有效的,因为出现了大括号{}。