我有以下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项)。我怎样才能得到两者?
谢谢, 米尔恰
答案 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改为数据的最后一行。
根据需要复制。在照片中,公式通过第四行。
答案 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()
编辑,我会非常感激!
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))),"")