2013-10-23 144 views
4

我想创建一个匹配两列的表查找公式。例如,假设我想在Type列为Biennial并且Result列为Warning的行中找到Letter列的值。Excel表查找匹配两列的值

 
    A    B   C 
1 Letter   Type   Result 
2 A    Annual  Exceeds 
3 B    Biennial  Warning 
4 C    Biennial  DevelopmentNeeded 
5 D    Biennial  PartiallyMeets 
6 E    Annual  Meets 

什么将公式模样做到这一点?

回答

6

SUMPRODUCT()公式适用于要查找具有多个条件的值的情况。当想要查找数值时最为方便,但也可以通过调整来查找字符串值。作为奖励,你可以避免使用数组公式。 (加入缩进易读性,这可在Excel公式中使用ALT做+ ENTER)

此特定问题可以用下面的公式来解决:

=INDEX(
     $A$2:$A$6, 
     SUMPRODUCT(
        ($B$2:$B$6 = "Biennial") * 
        ($C$2:$C$6 = "Warning") * 
        ROW($A$2:$A$6) 
       ) - 1 
     ) 

首先,SUMPRODUCT()被用于过滤出正确的行使用($B$2:$B$6 = "Biennial")($C$2:$C$6 = "Warning");乘法运算符*充当AND运算符(运算符+将作为OR运算符)。然后将结果乘以ROW($A$2:$A$6)以找到具有组合的特定行。 SUMPRODUCT()然后增加了一切,在这种情况下给我们3。由于搜索结果实际上是由于列标题而在第2行,所以我们减去1.通过应用INDEX()函数,我们得到期望的结果:B

当心,虽然这是的情况当且仅当寻求的组合是唯一的。如果所寻求的组合不止一次存在,这将会失效。

+1

哇!我一直使用ALT-ENTER来控制文字内容的格式,但我没有意识到它会在公式中起作用!这是非常有用的信息:谢谢! –

+0

在Excel中唯一不幸的是你需要使用大量的空格来完成缩进:-( – oscarius

+0

是的,没有ALT-TAB!但是,无论如何...我仍然更好。 –

3

可以使用数组公式,如果你喜欢:

=INDEX($A$2:$A$6,MATCH(1,($B$2:$B$6="Biennial")*($C$2:$C$6="Warning"),0)) 

用Ctrl输入+ Shift + Enter键

如果你想做到这一点没有数组公式,你可以做一个事情是这样的通过创建一个帮手列。

列d有公式:

=B2&C2 

抄下来

那么新公式可以是:

=INDEX($A$2:$A$6,MATCH("BiennialWarning",$D$2:$D$6,0)) 

这只是在文本上戏,真的。

+0

你知道没有数组公式的方法吗? –

+0

@JeffAxelrod调整公式。只是好奇,为什么你不想使用数组公式? –

+0

因为我相信没有简单的方法来复制和粘贴相对引用的数组公式。 –

5

避免阵列条目的另一种方法是:

=INDEX($A$2:$A$6,MATCH(2,index(1/(($B$2:$B$6="Biennial")*($C$2:$C$6="Warning")),0))) 

它利用该匹配函数忽略某些错误的情况和该索引自然管理阵列。