2015-03-31 82 views
0

这里发现的所有领域,是我使用的阵列功能:Excel的数组函数返回索引和匹配

=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

请注意,在主数据大卫·史密斯的两个实例,但只有一个分配表作为它正在与员工名单建成。

我在想的是从主数据中使用一个数组,其中指定的指标等于1,并完全废除雇员名单,在指定的表中建立名称,但我真的不确定这是否是可能或如何去做。

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

+1

你是说空白单元格的名字应该引用一个项目?也许你可以发布6到10行的编辑样本数据。 – Jeeped 2015-03-31 10:27:46

+0

在那里添加了一些示例数据,以便您可以更好地了解问题 – user3456401 2015-03-31 11:01:00

回答

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隐藏错误值。你似乎知道如何做到这一点。

+0

您好那里我尝试使用此函数使用我的示例数据,但是当我尝试通过引用另一个工作表来使用它时,它似乎不适用于我。 您的解决方案的工作原理是添加不完全按照我希望的新列,但这并不重要。 无论如何,这里是使用试图引用主数据的公式。 '= IFERROR(INDEX('Master Data'!$ D $ 1:$ D $ 1000,SMALL(IF('Master Data'!$ J $ 1:$ J $ 1000 = $ E4,IF('Master Data'!$ W $ 1:$ W $ 1000 = 1,ROW($ 1:$ 1000))),COLUMN('Master Data'!A:A)))“”)' 想错行或列功能 – user3456401 2015-04-01 14:26:15

+0

看起来没问题如果引用是正确的 - 这是我看不到的。你从公式中得到什么价值?你有没有把它作为数组公式输入? – 2015-04-01 15:10:05

+0

它只是空白,是作为一个数组公式,并认为所有参考都是正确的在上面发送的样本应该是D:D在列部分,但没有喜悦 – user3456401 2015-04-02 12:20:00

相关问题