Excel – 数组公式作为名称范围不起作用

我有一个桌面项目和人员,我想要做一个dynamic的名字范围的基础上。 但是,它似乎没有返回任何值。 任何对此的见解都会有所帮助。 谢谢!

表:

projperson a x1 a x2 a x3 b y1 b y2 b y3 

名称范围定义:

 =IF(temp[proj]=selected_project,temp[person],"") 

其中selected_project是项目列表中的a或b之一(通过数据validation进行select)。 这个名称范围不会返回任何值。

如果select项目a,我的预期输出将是一个名称范围{x1,x2,x3}。

在名称pipe理器中将其定义为:

 =INDEX(temp[person],N(IF(1,SMALL(IF(temp[proj]=selected_project,ROW(temp[proj])-MIN(ROW(temp[proj]))+1),ROW(INDIRECT("1:"&COUNTIF(temp[proj],selected_project))))))) 

请注意,即使应用了CSE,将该expression式(或者同样表示该expression式的定义名称)input到工作表中的实际单元格中也不会生成所需的数组,因为没有外部公式作用于该expression式,返回数组。

当然,任何合适的外部公式都会强制这个数组返回,尽pipe结果expression式是否需要CSE取决于上面的expression式中的哪一个或者表示该expression式的Defined Name被引用。

例如,如果以上存储为Rng ,则非数组公式为:

 =COUNTA(Rng) 

将使用您给出的示例解决为:

 =COUNTA({"x1";"x2";"x3"}) 

但是,除非数组input(即使用CSE),否则等效expression式:

 =COUNTA(INDEX(temp[person],N(IF(1,SMALL(IF(temp[proj]=selected_project,ROW(temp[proj])-MIN(ROW(temp[proj]))+1),ROW(INDIRECT("1:"&COUNTIF(temp[proj],selected_project)))))))) 

不会像上面那样解决,而是要:

 =COUNTA("x1") 

问候