2016-03-25 4 views
0

Итак, я искал учебники о том, как это сделать, и я все еще борется, поэтому я мог бы использовать некоторую экспертную помощь. Я знаю, что она включает в себя очень сложную вложенную формулу с вещами, как SMALL, ROW, INDEX и т.д ...Возврат всех возможных значений вместо VLOOKUP

Так вот две картинки, которые предоставляют пример того, что я ищу. В реалиях более 1000 строк, но это облегчает вам ребята.

Так вот мой первый пример, давайте назовем это Лист1 !:

image

код, ID_1 и ID_2. Таким образом, как вы можете видеть (и просто сосредоточьтесь на вводе в A2), в связанной книге будут два отдельных идентификатора. Этот лист или, по крайней мере, крошечный образец из него, выглядит следующим образом:

image

В первой колонке мы видим код мы ищем (что мы имеем в А2 первой), каждый из которых имеет разные идентификаторы. Так как я уверен, что вы уже можете сказать, я ищу формулу, которая позволит мне вернуть эти значения в ID_1 и ID_2 на первом листе.

Я занимаюсь этим в течение часа, и я в тупике, поэтому я был бы очень признателен за любую предоставленную помощь!

+0

Эй WizKids, сделал какой-либо из них ответы помогают? если да, можете ли вы принять ответ на один из них. – MacroMarc

ответ

0

хорошо, если два ID будут последовательными во втором списке, попробуйте следующее:

=index('workbookname'SheetName!columnrangeofserialnumbers,match(A2,'workbookname'Sheetname!columnrangeofIDs,0)) 

Предполагая, что ваша вторая книга называются сериалами, и вся информация на sheet1 вы бы ввести последующие в В2:

=index('serials'sheet1!$B$2:$B$1000,match(A2,'serials'sheet1!$B$2:$B$1000,0)) 

в С2 введите следующий (предполагается, что идентификаторы будут отображаться последовательно)

=index('serials'sheet1!$B$2:$B$1000,match(A2,'serials'sheet1!$B$2:$B$1000,0)+1) 

Это работает только в том случае, если другая книга открыта, насколько я знаю, и при том понимании, что два идентификатора будут перечислены последовательно в списке.

0

Это более общий код, если идентификаторы НЕ перечислены последовательно. Очевидно, что я сделал это в качестве примера, чтобы принять более общий случай, когда идентификаторы происходят где угодно во втором наборе данных, И там, где есть потенциально несколько.

IFERROR(INDEX($V$2:$V$15, SMALL(IF($U$2:$U$15=$M2, ROW($U$2:$U$15), FALSE), COLUMNS($N2:N2))-ROW($V$1), 1), "") 

Эта формула должна быть введена с Ctrl-Shift-Enter перед копированием поперек и вниз! Обратите внимание, все абсолютные и относительные реферирования/замок ($ знаки)

Page set-up with Array Formula

Логические шаги в построении такой формуле:

1) Мы используем ЕСЛИ функцию, чтобы проверить, если значения в колонке матча U значение в столбце M.

2) В параметре «value-if-true» мы получим соответствующий номер строки значений в столбце U. Эти числа будут переданы позже в функции SMALL.

3) В стоимость невыполненного-части, мы просто возвращаем ложь, как позже будет использоваться в качестве не-числа в МАЛОГО функции

Выше 3 шага в части: IF($U$2:$U$15=$M2, ROW($U$2:$U$15), FALSE)

4) Теперь у нас есть массив смешанных номеров строк и значений FALSE, которые мы хотим передать функции INDEX, чтобы просто получить соответствующее значение в столбце V (наш второй datset). НО, поскольку мы хотим получить различные совпадения строк для каждого кода, мы должны выловить их из смешанного массива с помощью функции SMALL.

5), используя наши колонны в качестве инкрементора, применим небольшую функцию в массив с переменным параметром к. Мы используем функцию COLUMNS (обратите внимание на различное использование знака $), так что, перетаскивая формулу попеременно, количество столбцов увеличивается: COLUMNS($N2:N2) - дает значения K 1, 2, 3, 4, когда мы перетаскиваем формулу из столбца N в столбец Q. Обратите внимание, что полезно, чтобы функция SMALL игнорировала значения FALSE при просмотре массива для значений по размеру.

enter image description here

6) Существует корректировка, чтобы учесть тот факт, что строки являются относительно диапазона «IdS», который мы будем кормить в функции INDEX для получения различных идентификаторов. SMALL(IF($U$2:$U$15=$M2, ROW($U$2:$U$15), FALSE), COLUMNS($N2:N2))-ROW($V$1).

Этого можно избежать, если использовать весь столбец V в качестве справочного параметра массива в функции INDEX, но это еще один способ ...

7) Это результирующее значение теперь может быть передано в INDEX чтобы получить различные идентификаторы. Параметр column_num 1, который я помещал в функцию, не нужен в одностолбцовом массиве поиска, но есть для полноты.

8) Вся конструкция заворачивают в функции ЕСЛИОШИБКА дать пустую строку, если совпадения нет, но некоторые люди, возможно, пожелают иметь выходы ошибок там ...

Смежные вопросы