Это более общий код, если идентификаторы НЕ перечислены последовательно. Очевидно, что я сделал это в качестве примера, чтобы принять более общий случай, когда идентификаторы происходят где угодно во втором наборе данных, И там, где есть потенциально несколько.
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 перед копированием поперек и вниз! Обратите внимание, все абсолютные и относительные реферирования/замок ($ знаки)
Логические шаги в построении такой формуле:
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 при просмотре массива для значений по размеру.
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) Вся конструкция заворачивают в функции ЕСЛИОШИБКА дать пустую строку, если совпадения нет, но некоторые люди, возможно, пожелают иметь выходы ошибок там ...
Эй WizKids, сделал какой-либо из них ответы помогают? если да, можете ли вы принять ответ на один из них. – MacroMarc