2016-07-15 599 views
0

我正在使用INDEX(MATCH)在另一個工作表中使用來自兩個不同單元格的條件在一列中查找值。這裏是我試圖使用的公式:使用INDEX(MATCH)根據多個條件查找值

=INDEX(Sheet1!P:P,MATCH(1,(Sheet1!A:A=Sheet2!C$1)*(Sheet1!B:B=Sheet2!$B2),0)) 

Sheet1是數組,列P包含我想要公式返回的值。 Sheet1中的列A包含第一個標準的值,而Sheet1中的列B包含第二個標準的值。標準在Sheet2的C1和B2中表示。這將隨着單元格被複制而改變。任何人都可以在此公式中看到任何錯誤?它返回一個「值不適用於公式或函數」。

+2

您是否在離開編輯模式時通過按Ctrl-Shift-Enter將其作爲數組公式輸入? –

+0

列A,B和/或P文本,日期或數字? – Jeeped

+0

斯科特 - 這是問題所在。謝謝你的答案。 – SteveC

回答

0

這將不得不作爲數組公式1進行輸入,因此應將全列參考值減小到最小值,否則將會有數十萬個空白單元格處理時出現不必要的計算延遲。

隨着A列中的文本,

=index(Sheet1!$P$1:index(Sheet1!$P:$P, match("zzz", Sheet1!$A:$A)), 
    match(1, (Sheet1!$A$1:index(Sheet1!$A:$A, match("zzz", Sheet1!$A:$A))=Sheet2!C$1)* 
      (Sheet1!$B$1:index(Sheet1!$B:$B, match("zzz", Sheet1!$A:$A))=Sheet2!$B2), 0)) 

用數字或列中的日期,

=index(Sheet1!$P$1:index(Sheet1!$P:$P, match(1e99, Sheet1!$A:$A)), 
    match(1, (Sheet1!$A$1:index(Sheet1!$A:$A, match(1e99, Sheet1!$A:$A))=Sheet2!C$1)* 
      (Sheet1!$B$1:index(Sheet1!$B:$B, match(1e99, Sheet1!$A:$A))=Sheet2!$B2), 0)) 

你沒有絕對的參考錨(如$)在原來的工作表Sheet1範圍內引用,但你讓他們根據Sheet2的標準設置的方式讓我相信你需要他們的行和列。

如果行1中有列標題標籤,請將A1,B1和P1更改爲A2,B2和P2。


¹數組公式需要與按Ctrl ++Enter↵完成。如果輸入正確,Excel將花括號包括公式(例如{})。你不要自己輸入大括號。一旦正確輸入第一個單元格,就可以像其他公式一樣向下或向右填充或複製它們。嘗試並將您的全列引用減少到更接近表示實際數據範圍的範圍。數組公式以對數形式計算週期,所以最好將參考範圍縮小到最小。有關更多信息,請參見Guidelines and examples of array formulas