Вернуть, какая подстрока находится в ячейке из списка подстрок - PullRequest
0 голосов
/ 26 февраля 2019

Проблема

Дан список подстрок в диапазоне в Excel, например:

Таблица подстрок

[A1:A3]  
Apple  
Banana  
Carrot  

Я хочу вернуть, какая из этих подстрок присутствует в ячейке, содержащей текст, например:

Текстовая ячейка

[A5]  
The Apple fell from the tree  

Метод / формула вернет: Apple

Причина :

Каждый месяц я буду импортировать несколько сотен ячеек, которые содержат текст и нуждаются в классификации.Наиболее распространенные подстроки будут находиться в диапазоне подстрок вверху, идея состоит в том, что импортированные текстовые ячейки будут иметь смежный столбец с формулой, которая выводит, какая из подстрок, если таковая имеется, экономит много времени пользователя.Примером желаемого результата будет:

Требуемый выход

*Table of text cells* | *Output referencing substring table* [A5:B5]  
The Apple fell from the tree | Apple  
A Carrot grows in the ground | Carrot  
There was a bag of rotten Apples | Apple  
Watch out for that Orange |  
The monkey ate the Banana | Banana  

Ближайшая формула с помощью экспериментов и исследований

БлижайшийЯ получил формулу, которая возвращает, если присутствует подстрока (возвращающая 1 или 0):

=SUMPRODUCT(--ISNUMBER(SEARCH($A$1:$A$3,A5)))

Используя эту формулу и приведенный выше пример 'Желаемый вывод', я бы увидела:

[A5:B5]  
The Apple fell from the tree | 1  
A Carrot grows in the ground | 1  
There was a bag of rotten Apples | 1  
Watch out for that Orange | 0  
The monkey ate the Banana | 1 

Это было рекомендовано на этом форуме для теста ИСТИНА / ЛОЖЬ, который я не смог адаптировать к своим потребностям.Любой совет с благодарностью :)

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Если у вас есть Excel 2016, вы можете использовать TEXTJOIN в формуле массива:

{=TEXTJOIN(", ",TRUE,IF(ISNUMBER(SEARCH(A$2:A$4,A5)),A$2:A$4,""))}

Поскольку это формула массива, не забудьте использовать CTRL SHIFT ENTER

enter image description here

0 голосов
/ 26 февраля 2019

В B5:

=INDEX(A:A,AGGREGATE(15,7,ROW($A$1:$A$3)/(ISNUMBER(SEARCH($A$1:$A$3,A5))),1))

и копирование вниз

...