Arrays 返回Excel数组中的所有非错误行

Arrays 返回Excel数组中的所有非错误行,arrays,excel,indexing,match,Arrays,Excel,Indexing,Match,我有一个表(表1),范围为D1:F20。在这个表中,我有一系列的数据。表1中的几行在D列的单元格中有#N/A。 D1:F1是标题 我想创建另一个表(表2),该表收集表1中的所有数据,除了那些具有#N/A的行。在我思考的过程中,我假设这必须是一个数组公式,它将循环表1中的行,并将那些没有#N/A的行发布到表2中 我建立了以下公式: {=INDEX($D$1:$F$20,MATCH(FALSE,ISERROR(D2),0))} 我把它做成了一个数组公式,但它不起作用。目前,它只返回表1的原样,即所

我有一个表(表1),范围为D1:F20。在这个表中,我有一系列的数据。表1中的几行在D列的单元格中有#N/A。 D1:F1是标题

我想创建另一个表(表2),该表收集表1中的所有数据,除了那些具有#N/A的行。在我思考的过程中,我假设这必须是一个数组公式,它将循环表1中的行,并将那些没有#N/A的行发布到表2中

我建立了以下公式:

{=INDEX($D$1:$F$20,MATCH(FALSE,ISERROR(D2),0))}
我把它做成了一个数组公式,但它不起作用。目前,它只返回表1的原样,即所有行,包括带有#N/A的行


如何才能达到预期的结果?

使用此公式并向下复制,以仅从列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))))

您不能使用表1 D列上的自动筛选功能将除NA之外的所有值都转换为NA,然后将可见单元格复制到另一个表中吗?谢谢您的帮助。不幸的是,我将不得不使用公式,因为我无法筛选表1。