2015-10-08 142 views
1

我希望excel能夠使用INDEXMATCH顯示錶格數組中有兩個匹配單元格com_cddiv_cd的值。使用INDEX和MATCH的表格陣列中的兩列查找

我試過下面的公式,但它沒有工作。

=INDEX(K9:K53,MATCH(K3,I9:I53,0),MATCH(K4,J9:J53,0)) 

這裏是excel表與所期望的結果,根據com_cddiv_cd

div

回答

1

給定的屏幕截圖嘗試的陣列式(CTRL + SHIFT + ENTER)代替Enter

=INDEX(K9:K53,MATCH(K3&K4,I9:I53&J9:J53,0),1) 

未測試,但應該工作。

稍後再編輯解釋我們的公式以及您的公式不起作用的原因。

+0

現在感謝他的工作,請稍後再解釋你的配方。 – Iftekhar

1

column_num參數INDEX function不能正確提供次要行標準。您需要一種方法來確保row_num參數上的兩列匹配,並將column_num留空或作爲(只有K9:K53中的列)。

爲K5的標準配方應該是,

=index(K9:K53, aggregate(15, 6, row(1:45)/((i9:i53=k3)*(j9:j53=k4)), 1)) 

...或者,

=index(K9:K53, min(index(row(1:45)+((i9:i53<>k3)+(j9:j53<>k4))*1e99, ,))) 

小區範圍K9:K53具有總共45行。 K9:K53內的位置將在ROW(1:45)之內。第一個公式將任何不匹配的行強制爲#DIV/0!錯誤狀態,AGGREGATE¹ function使用選項忽略錯誤,同時檢索SMALL sub-function(例如)的最小有效條目。第二個公式通過向任何不匹配的行添加1E + 99(一個後跟99個零)並採用與MIN function最小的匹配行執行相同的操作。

AGGREGATE two column match


¹AGGREGATE function用Excel 2010中引入的。它是不是在早期版本。

+0

就目前而言,如果被引用的行數改變(一個不太可能的情況),那麼OP將不得不重新確定ROW(1:45)應該成爲什麼部分。如果您將K:K傳遞給INDEX,而不是K9:K53,那麼ROW部分就是ROW(K9:K53)。一般來說,如果範圍是Range1,那麼ROW部分是ROW(Range1),因此在兩者之間提供了一個簡單和恆定的關係,而不需要進一步的思考或者當Range1改變時需要手動修改。 –