2017-01-20 93 views
0

我有2個工作簿,一個名爲時間表一個名爲AIH。它們都具有具有唯一標識符的代理。VLookup然後嵌套如果的

在AIH工作手冊中,我有工作組,其中代理人已經受過培訓。他們的範圍從基本,一般,中級,專業,非調度,HP,MB。如果代理商已接受培訓,使用X.

我希望能夠根據兩個工作簿中的唯一標識符,在計劃工作簿上的這些工作組之間拉取「培訓的最高價值」。

我是否如下嵌套:

=IF([headcount.xlsx]Sheet1!$N$2="X", _ 
    [headcount.xlsx]Sheet1!$N$1,IF([headcount.xlsx]Sheet1!$M$2="X", _ 
    [headcount.xlsx]Sheet1!$M$1,IF([headcount.xlsx]Sheet1!$L$2="X", _ 
    [headcount.xlsx]Sheet1!$L$1,IF([headcount.xlsx]Sheet1!$K$2="X", _ 
    [headcount.xlsx]Sheet1!$K$1,IF([headcount.xlsx]Sheet1!$J$2="X", _ 
    [headcount.xlsx]Sheet1!$J$1,IF([headcount.xlsx]Sheet1!$I$2="X", _ 
    [headcount.xlsx]Sheet1!$I$1,IF([headcount.xlsx]Sheet1!$H$2="X", _ 
    [headcount.xlsx]Sheet1!$H$1,"Not Trained"))))))) 

所以這步槍通過我的細胞,以尋找X,並顯示最高的培訓工作組與我的步槍向後通過列。

問題是我需要做一個vlookup來匹配列中的唯一標識符,以便我可以根據代理程序標識符(唯一標識符)提取正確的信息,我不確定如何做到這一點,因爲vlookup需要我返回特定列的值。

與excel非常新,所以更詳細的答案更適合我。

提前致謝!

+1

只需簡單記錄一下,長公式可以簡化爲= = INDEX([headcount.xlsx] Sheet1!$ H $ 1:$ N $ 1,MATCH(「Y」,[headcount.xlsx] Sheet1!H2:N2) )' –

+0

什麼專欄還有唯一標識符? –

回答

0

你的公式是這樣的:

=INDEX([headcount.xlsx]Sheet1!$H$1:$N$1,MATCH("Y",INDEX([headcount.xlsx]Sheet1!H:H,MATCH(A2,[headcount.xlsx]Sheet1!A:A,0)):INDEX([headcount.xlsx]Sheet1!N:N,MATCH(A2,[headcount.xlsx]Sheet1!A:A,0)))) 

哪裏A2是您要查找的[headcount.xlsx]Sheet1!表和[headcount.xlsx]Sheet1!A:A是其中唯一的標識符,發現表列的唯一標識符。

然後可以將它複製到列中。

+0

謝謝先生,我一進去就會嘗試這一點。 – Benumb

+0

這工作完美! 我需要閱讀更多的索引匹配,我只隱約知道這裏發生了什麼。 – Benumb

+0

@Benumb請在答案處點擊複選標記並標記爲正確。 –

0

不知道你還需要一個解釋,但我會採取一個破解它無論如何。

如果有人發現錯誤,讓我知道,我會解決它。

縱觀「外」 MATCH(),一個尋找「Y」的定義是...

MATCH(value-to-find,range-to-look-in,[match-type]) 

一個關鍵是什麼,是不是有 - 那就是,@ScottCraner沒指定匹配類型,所以它默認爲1,這意味着在這種情況下返回小於或等於「Y」的最大值。在尋找最大值的過程中,它會繼續查找「Y」,直到它用完值,這總是最右邊一列中包含「X」的值。它的工作原理是「X」小於「Y」,所有的值都是「X」。雖然它也會尋找「X」而不是「Y」。 (不知道Scott爲什麼使用「Y」。)

這就解釋了「外部」MATCH()正在做什麼。但它在哪裏看?

範圍外觀由兩個INDEX()功能組成,提供該範圍的[上]左和右下。第一個INDEX()正在返回您正在查找的標識符(A2)所在行的列H中的單元格。第二個INDEX()正在返回同一行中N列的單元格。您會注意到,關聯的「內部」MATCH()函數對於匹配類型有0,這意味着它們找到第一個完全匹配。

所以,如果您的標識符(A2)出現在一行20中,範圍 - 看成爲H20:N20,然後外MATCH()會在這個範圍內最右邊的「X」,外INDEX()返回相應的標題(H和N之間的第一行)。

您必須必須使用IFERROR()或其他一些IF函數來處理根本沒有「X」的情況,就像在原始公式的最後一部分(「未受過訓練」)一樣。