2017-01-20 8 views
0

У меня есть 2 книги один названный график один назван АИГ. Оба из них имеют агенты с уникальными идентификаторами.ВПР затем вложен ИФ

В учебнике AIH у меня есть рабочие группы, в которых были обучены агенты. Они варьируются от Basic, General, Intermediate, Specialty, Non-Dispatch, 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 хочет меня для возврата значения определенного столбца.

Очень новый с первенствует, поэтому более подробный ответ, тем лучше для меня.

Заранее благодарен!

+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». (Не знаю, почему Скотт использовал «Y».)

Так что объясняет, что «внешний» MATCH() делает. Но где он смотрит?

Его Дальность видимости состоит из двух функций INDEX(), обеспечивающих [верхнее] левое и [нижнее] право диапазона. Первый INDEX() возвращает ячейку в столбце H, которая находится в строке, имеющей идентификатор (A2), который вы ищете. Второй INDEX() возвращает ячейку в столбце N, которая находится в той же строке.Вы заметите, что соответствующие «внутренние» функции MATCH() имеют 0 для типа соответствия, что означает, что они находят первое точное совпадение.

Таким образом, если ваш идентификатор (A2) появляется в строке 20, то диапазон к выглядеть становится H20: N20, а затем внешний MATCH() ищет крайний правый «X» в этом диапазоне, а наружный INDEX() возвращает соответствующий заголовок (верхняя строка между H и N).

Возможно, вам пришлось использовать IFERROR() или какую-либо другую функцию IF, чтобы обрабатывать случай, когда нет «X», как в последней части вашей исходной формулы («Не обучено»).