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

时间:2016-02-19 16:01:36

标签: 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 + ENTER 输入公式,我只得到第一个值(第2项)。我怎样才能得到两者?

谢谢, 米尔恰

2 个答案:

答案 0 :(得分:2)

如果你有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改为数据的最后一行。

根据需要复制。在照片中,公式通过第四行。

enter image description here

答案 1 :(得分:1)

我非常喜欢@ ScottCraner,我只是想把它发布在这里FYI(我更喜欢他的解决方案,IMO,因为你不必编辑其他的公式也是):

围绕您的公式回复IfError()错误的#N/A=IfError([your formula],"Error")然后

使用A1:B4中的数据(如Scott的截图),在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 + ENTER 输入并向下拖动。

编辑:如果有人提示如何不需要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))),"")