2017-08-15 18 views
0

我有一个表(表1),范围为D1:F20。在这张表中我有一系列数据。表1中的若干行在列D的单元中具有#N/A。 D1:F1是标题。返回Excel数组中的所有非错误行

我想创建另一个表(表2),收集表1中的所有数据,除了那些具有#N/A的行。正如我在考虑的那样,我认为这必须是一个数组公式,它将遍历表1中的行,并在表2中不包含#N/A。

我已经建立了下面的公式:

{=INDEX($D$1:$F$20,MATCH(FALSE,ISERROR(D2),0))} 

我已是一个数组公式,但它不工作。目前,它只是按照原样返回表1,即包含所有包含#N/A的行。

我该如何达到预期的效果?

+0

不能使用在表1列d自动筛选到除NA以外的所有值,然后将可见单元格复制到另一个表中? – sous2817

+0

谢谢你的帮助。不幸的是,我将不得不使用公式,因为我无法过滤表1. – franciscofcosta

回答

1

使用这个公式复制到您的列d得到的只是非误差细胞:

=IFERROR(INDEX(D:D,SMALL(INDEX(NOT(ISERROR($D$2:$D$11))*ROW($D$2:$D$11),),SUMPRODUCT(--ISERROR($D$2:$D$11))+ROW(H1))),"") 

然后,你可以做一个VLOOKUP公式从列得到的内容d和E(假设D列的内容是唯一的)。

如果列d的内容是不是唯一的,在复制这个公式得到E和F

的内容来增大式的表现,我建议把SUMPRODUCT部分在它自己的小区(该小区可被隐藏起来,甚至被放在不同的工作表上,并隐藏该工作表),以便它只计算一次然后被引用,而不是每个公式都重新计算一遍。这也可以让你避免Iferror,这样公式在有效值不足时不需要计算。我们会说SUMPRODUCT公式把得到的细胞作为Z1仅此:

=SUMPRODUCT(--ISERROR($D$2:$D$11)) 

然后主公式变为这样:

=IF(ROW(A1)>$Z$1,"",INDEX(D:D,SMALL(INDEX(NOT(ISERROR($D$2:$D$11))*ROW($D$2:$D$11),),$Z$1+ROW(A1)))) 
+0

谢谢!它工作完美 – franciscofcosta