2017-02-20 61 views
0

我在一張紙上有一列數據,每個單元格包含可以在另一張紙上的數組中找到的值。我試圖找到一個函數,如果它從工作表1的列中找到工作表2中的數組中的值,那麼它將返回最左列中的值。使用索引和匹配進行垂直和水平查找

這裏的數據的一個示例:

片1

| AH2377507 | 
| 2188622 | 
| EA404278 | 
| AH885430 | 

片2

aaa | 1874379 | AH2377507 | EA2377507 | PS2377507 | 67004276 | 949529 | AH2065634 
bbb | 1938614 | 2186486 | 2188622 | 2188708 
ccc | 919973 | AH404278 | EA404278 | PS404278 | 2188746 
ddd | 960929 | AH885430 | EA885430 | PS885430 

所以 '2188622' 時在片材2被發現時,它返回'BBB'。

此外,工作表2中包含數據的列的數量因行而異,因此數組中有空白單元格(如果有的話)。

我試過在hlookup中嵌套vlookp,反之亦然,以及在索引/匹配中嵌套hlookup,但這些想法都沒有奏效。

回答

1

您需要的不僅僅是一個INDEX/MATCH

=INDEX(Sheet2!$A$1:$A$4,SUMPRODUCT((Sheet2!$B$1:$F$4=Sheet1!$A1)*ROW(Sheet2!$A$1:$A$4))) 

假設你的工作表Sheet1 數據A1:A4和你Sheet2中數據爲A1:F4多一點。

注意ROW(Sheet2!$A$1:$A$4)最後與您的數據無關。範圍必須始終在A1開始,如果您有10記錄在Sheet2那麼它必須結束在A10,例如。


更多信息 ...

因爲你查找的價值來自於一個二維數組,而不是單一的行/科拉姆,您不能使用MATCH。我們需要模擬比賽,但這樣是在SUMPRODUCT用武之地,如果你在A1:B2

a a 
a b 

我們可以進行邏輯運算A1:B2="b"有以下陣列。這就造成這樣

FALSE FALSE 
FALSE TRUE 

數組記住,TRUE=1FALSE=0如果我們通過ROW(A1:A2)乘然後在該陣列

0*1 0*1 = 0 0 
0*2 1*2 = 0 2 

所以你可以看到這個數組的SUM2這也正是位置我們正在尋找(這是什麼MATCH將返回)

所以我們把它全部包裝在一個SUMPRODUCT李柯本

=SUMPRODUCT((A1:B2="b")*ROW(A1:A2)) 

而且你有你的答案

+1

可以在你的'ROW(工作表Sheet1 $ A $ 1:$ A $ 4)'是'ROW(Sheet2的$ A $ 1:$ A $ 4)' ? - 這會使「$ A $ 4」應該與'Sheet2'中的項目數相關聯。並且應該'... = Sheet1!$ A $ 1'是'... = Sheet1!$ A1',以便公式可以複製到其他行? – YowE3K

+0

我必須考慮一下,但是,我同意。謝謝! – CallumDA

+0

有人打斷我的工作問題後,我讀了你的原始評論,但在我有機會迴應之前 - 現在我很高興他們這樣做 - 這意味着我不需要想出一個解釋:D – YowE3K