2013-10-23 55 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))) 

它利用該匹配函數忽略某些錯誤的情況和該索引自然管理陣列。