Как использовать подстроку для возврата списка совпадающих значений в Excel

Это вопрос функции Excel.

У меня есть список 400K + строк. Многие из них являются вариациями с тем же названием. Мне нужен способ автоматического сопоставления любой записи списка со строкой. Поэтому, если все 5 элементов в моем списке содержат строку 'ldl', я хочу получить способ их вернуть.

У меня есть следующий фрагмент кода, который я проверил работает для точного соответствия. D2 - это значение, которое я хочу сопоставить, а a2: a11 - это диапазон, который я ищу. Я просто перетаскиваю дескриптор ячейки вниз, как и строки, сколько мне нужно, и это будет соответствовать столько экземпляров в списке

= ИНДЕКС ($ A $ 2: $ A $ 11, МАЛЕНЬКИЙ (ЕСЛИ ($ D $ 2 = $ A $ 2: $ A $ 11, ROW ($ A $ 2: $ A $ 11) -ROW ($ A $ 2) +1), ROW ( 1: 1)))

То, что я хотел бы сделать, это вернуть значение в Col A, если D2 соответствует содержимому ячейки через совпадение подстроки.

Я попробовал следующее, но, хотя синтаксически правильно, он возвращает только первое значение в списке.

= ИНДЕКС ($ B $ 2: $ B $ 11, МАЛЕНЬКИЙ (ЕСЛИ (НОМЕР (ПОИСК ($ D $ 2, $ A $ 2: $ A $ 11)), ROW ($ B $ 2: $ B $ 11) -ROW ($ B $ 2) +1), ROW (1: 1)))

Изображение, которое я включил, демонстрирует текущую функциональность точного соответствия. Я бы хотел, чтобы A2: A11 мог содержать D2 с любым количеством символов до или после значения поиска. Например, на скриншоте я хотел бы вернуть A11. введите описание изображения здесь

Заранее спасибо.

Всего 2 ответа


Вы можете комбинировать функции INDEX , AGGREGATE и SEARCH :

=INDEX($A$2:$A$11,AGGREGATE(15,6,(SEARCH($D$2,$A$2:$A$11)>0)*ROW($A$2:$A$11)-1,ROW()-1))

введите описание изображения здесь


Вот ваша первая формула, модифицированная для использования функции ПОИСК:

=INDEX($A$2:$A$11, SMALL(IF(IFERROR(SEARCH($D$2,$A$2:$A$11),FALSE), ROW($A$2:$A$11)-ROW($A$2)+1), ROW(1:1)))