Excel数组函数返回find的索引和匹配的所有字段

这里是我正在使用的数组函数:

=IFERROR(INDEX('Master Data'!$D$2:$D$153,MATCH(1,(B9='Master Data'!$J$2:$J$153)*('Master Data'!$W$2:$W$153=1),FALSE)),"") 

其中D是项目的名称,J是个人名称,W是检查他们是否分配给项目的标志,等于0或1. B也是从一个项目中build立的人员名称的一个实例单独列表。

它基本上引用主数据并返回任何具有指定条件的行。 然而,一个人可能有两个分配标志等于1的实例,因此当主数据被过滤时,不同的结果由该function返回。

另一个问题是人名不重复,所以也许最好的办法是从主数据开始填充分配表中的名字。

根据要求,这里只是一个简单的例子。 在左侧是主数据,中间是正在构build的分配表,右侧是在分配表中构build名称的雇员列表。

数据样本

请注意,主数据中有两个david smith实例,但在分配的表中只有一个由雇员列表构build。

我在想的是从主数据中使用一个指定等于1的数组来build立分配表中的名字,并且完全取消了员工列表,但是我真的不确定这是可能的还是如何去做吧。

或者,即使有某种方法从指定的指标= 1的主数据中select几列,

不知道我是否理解正确。 但如何列出多个查找结果的问题是可以实现与SMALL函数结合获得一个数组的行号。

比如有一张这样的表格:

在这里输入图像说明

那么公式是:

F4向下:

 =COUNTIFS($B:$B,$E4,$C:$C,1) 

G4然后复制到G4:J8:

 {=INDEX($A$1:$A$1000,SMALL(IF($B$1:$B$1000=$E4,IF($C$1:$C$1000=1,ROW($1:$1000))),COLUMN(A:A)))} 

但是,如果目标只是具有所有分配资源的过滤列表,那么公式可能是

E13:

 {=INDEX($B$1:$B$1000,MATCH(1,($C$1:$C$1000=1)*1,0))} 

E14向下:

 {=INDEX($B$1:$B$1000,MATCH(1,(COUNTIF($E$13:$E13,$B$1:$B$1000)=0)*($C$1:$C$1000=1),0))} 

{}中的公式是数组公式。 这些被input到没有大括号的单元格中,然后按[Ctrl] + [Shift] + [Enter]键完成。

为了更好地理解公式,我没有处理错误值。 您可以稍后使用IFERROR隐藏错误值。 你似乎知道如何做到这一点。