Как вернуть несколько значений совпадения из ячейки, содержащей слово / текст в Excel - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть куча данных, которые состоят из Идентификационного номера и Имен.

Изображение 1

enter image description here

{=IF(ISERROR(INDEX($A$2:$B$12;SMALL(IF($A$1:$A$16=$E$1;ROW($A$1:$A$12));ROW(1:1));2));"";INDEX($A$1:$B$12;SMALL(IF($A$1:$A$16=$E$1;ROW($A$1:$A$12));ROW(1:1));2))}

Ранее (изображение 1) я успешно смог вернуть несколько значений со значением A Name из столбца Names, которые состоят только из одного имени. Я использую формулу индекса функции массива для решения этой проблемы.

Но я застрял, когда у меня есть несколько имен в этом столбце Имен. То, что я хочу сделать, это вернуть несколько значений Id Number, которые состоят из нескольких имен, разделенных запятой внутри столбца «Имена», без изменения этого столбца. Ожидаемый результат показан на рисунке 2.

Изображение 2

enter image description here

Проблемы:

  1. Я хочу получить значение из столбца Идентификационный номер на основе Имен столбец, содержащий имя внутри
  2. Я хочу автоматически получить несколько значений, как показано в Изображение 1
  3. Если есть два одинаковых значения ID-номера, оно будет удалено или не будет отображаться в результате.

Я не возражаю против любого метода, который вы, ребята, наметите мне. Я буду признателен за любые решения, которые вы предложили. Большое спасибо.

1 Ответ

0 голосов
/ 11 сентября 2018

Вы можете использовать

=IFERROR(INDEX($A:$A,SMALL(IF(ISNUMBER(FIND(E$1,$B$2:$B$11))*(COUNTIF(E$1:E1,$A$2:$A$11)=0),ROW($B$2:$B$11)),1)),"")

, введенный как формула массива, используя Ctrl Shift Ввод

или

=IFERROR(INDEX($A:$A,AGGREGATE(15,6,ROW($B$2:$B$11)/(ISNUMBER(FIND(E$1,$B$2:$B$11))*(COUNTIF(E$1:E1,$A$2:$A$11)=0)),1)),"")

введено нормально.

enter image description here

РЕДАКТИРОВАТЬ

@ Рон Розенфельд абсолютноисправьте, что формулы в том виде, в котором они стоят, будут соответствовать (например) Джо и Джону, хотя эффект несколько смягчается тем фактом, что они используют поиск с учетом регистра с заглавной буквой в начале каждого имени (так что Анж нене соответствует Hanger).

Измененные формулы будут

=IFERROR(INDEX($A:$A,SMALL(IF(ISNUMBER(FIND(","&E$1&",",","&$B$2:$B$11&","))*(COUNTIF(E$1:E1,$A$2:$A$11)=0),ROW($B$2:$B$11)),1)),"")

и

=IFERROR(INDEX($A:$A,AGGREGATE(15,6,ROW($B$2:$B$11)/(ISNUMBER(FIND(","&E$1&",",","&$B$2:$B$11&","))*(COUNTIF(E$1:E1,$A$2:$A$11)=0)),1)),"")
...