Excel:返回在同一行中有错误的所有值

我有以下的Excel结构:

A1: Item 1 A2: Item 2 A3: Item 3 A4: Item 4 B1: some value B2: #N/A B3: #N/A B4: some other value 

我将需要一个数组公式,将返回以下内容:

 C1: Item 2 C2: Item 3 

我的第一个尝试是使用这样的东西:

 {=INDEX(A:A;MATCH(???;B:B;0))} 

问题是,不知道如何在MATCH函数中寻找#N / A,所以我改变我的数据来显示“0”而不是#N / A。 然后我改编了这个公式:

 {=INDEX(A:A;MATCH("0";B:B;0))} 

一旦我用CTRL + SHIFT + ENTERinput公式,我只会得到第一个值(Item 2)。 我怎么能得到这两个?

谢谢,Mircea

如果你有2010年或以后使用这个公式:

 =IFERROR(INDEX($A$1:$A$4,AGGREGATE(15,6,ROW($1:$4)/(ISERROR($B$1:$B$4)),ROW(1:1))),"") 

如果您有2007年或更早使用此数组公式:

 =IFERROR(INDEX($A$1:$A$4,SMALL(IF((ISERROR($B$1:$B$4)),ROW($1:$4)),ROW(1:1))),"") 

作为一个数组,它需要通过Ctrl-Shift-Enter确认。

将4改为数据的最后一行。

只要你需要复制下来。 在照片公式通过第四行。

在这里输入图像说明

我非常喜欢@ ScottCraner的,我只是以为我会在这里发布FYI(我喜欢他的解决scheme,虽然IMO,因为你不必编辑其他公式):

在你的公式中包含IfError() ,返回=IfError([your formula],"Error") #N/A错误: =IfError([your formula],"Error")然后

在A1:B4(如Scott的屏幕截图)中input数据,在E1: =IFERROR(INDEX(A$1:A$4,SMALL(IF(B$1:B$4="Error",ROW(B$1:B$4)-ROW(B$1)+1),ROWS(B$1:B1))),"")

CTRL + SHIFT + ENTERinput并向下拖动一个方法。

编辑:如果任何人有一个小费如何不需要IsError()编辑,我会很感激!

编辑2:啊,感谢斯科特的回答。 您可以使用此公式,而无需编辑原始数据,以包含一个IfError()=IFERROR(INDEX(A$1:A$4,SMALL(IF(ISERROR($B$1:$B$4),ROW(B$1:B$4)-ROW(B$1)+1),ROWS(B$1:B1))),"")