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

时间:2015-03-31 10:14:00

标签: arrays excel excel-formula

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

=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也是构建的人名的实例单独列出。

它基本上引用主数据并返回具有指定条件的所有行。但是,单个人可能有两个实例,其中指定的标志等于1,因此当主数据被过滤时,函数会返回不同的结果。

我遇到的另一个问题是人名不会重复,所以也许最好的方法是从主数据开始填充指定表中的名称。

这里要求的是一个简单的数据示例。左侧是主数据,中间是正在构建的已分配表,右侧是在指定表中构建名称的员工列表。

Data sample

请注意,主数据中有两个david smith实例,但只有一个在分配的表中,因为它是使用employees列表构建的。

我在想的是使用指定指标等于1的数组在主数据中建立指定表中的名称,并完全废弃员工列表,但我真的不确定这是不是是可能的或如何去做。

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

1 个答案:

答案 0 :(得分:1)

不确定我是否理解正确。但是,如果列出多个查找结果的问题可以通过SMALL函数结合获取ROW数字数组来实现。

例如,有一张这样的表格:

enter image description here

然后公式是:

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))}

{}中的公式是数组公式。这些是在没有大括号的情况下输入单元格,然后按[Ctrl] + [Shift] + [Enter]完成。

我没有处理错误值以更好地理解公式。您可以稍后使用IFERROR隐藏错误值。你好像知道怎么做。