2015-10-06 100 views
1

开头我试图根据两个条件进行索引匹配。我已经试过:索引匹配如果以

=index(B1:B4, match("*do", if(a1:a4 = "*Blue", b1:b4)),2)

 A   B  C 
_____________________________ 
1| Blue  | 5 | dotson 
2| Yellow  | 3 | dodo 
3| Yellow  | 8 | cat 
4| Blue-Green | 7 | dog 

我希望公式返回:

5 
7 

回答

1

这个公式可以做到。行2将其输入到任何空的细胞:

=IFERROR(INDEX($A$1:$C$4,SMALL(IF(ISNUMBER(SEARCH("blue",$A$1:$A$4))*ISNUMBER(SEARCH("do",$C$1:$C$4)),ROW($C$1:$C$4)),ROW(1:1)),2),"") 

这是一个阵列式,并且必须以Ctrl键 + + 输入来确认。

现在复制并选择一个范围一个单元格向下并按需要粘贴。

注意:将公式中的4s更改为能够满足您在深度方面的需求的行号。

注意:这是一个扑杀公式。值5将出现在第2行,值7将出现在第3行等

+0

@sharris为您工作? –

+0

这很接近@ExcelHero!我唯一的问题是,如果返回的列(上面列表B)有一个单元格在参数匹配时为空,它将返回0而不是任何内容。 –

+1

@SHARRIS这就是Excel的工作原理......永远。例如,说单元格A1是完全空白的。现在在另一个单元格中输入公式'= A1',您会看到公式的结果不是空白,而是零。当INDEX函数返回正确的单元格时,会发生完全相同的事情。真的,重写这种公认的奇怪行为的唯一方法是在空白的明确测试中包装一个公式,如下所示:'= IF(yourformula =“”,“”,yourformula)'你可以对我的公式,它显然会长两倍......但它会按照你想要的方式处理空白。 –

0

我认为你可以做到这一点没有得到通过参与INDEXMATCH

=IF(AND(LEFT(A1:A4, 4) = "Blue", LEFT(C1:C4, 2) = "do"), B1:B4)