Получить одно из указанных c слов из текстовой строки. Excel 2016+ - PullRequest
1 голос
/ 07 января 2020

У меня есть список слов, которые мне нужно получить из текстовой строки:

  • Корова
  • Собачка
  • Привет, получи

(просто случайные слова)

У меня есть несколько ячеек со случайными словами, окружающими нужные:

  • Случайные словосочетания Корова askjdhakj
  • sla; alsj Dog-Boy l; sasla
  • skla Hello-get it ksalksajsa

И мне нужно Функция Excel, чтобы извлечь мои указанные слова из этой ячейки. Проблема в том, что мне нужна 1 универсальная формула, которая проверяет все слова в строке и возвращает, если что-то соответствует одному из слов в списке.

Я бы использовал следующую функцию для извлечения одного слова из 1 ячейки:

=TRIM(MID(D4,SEARCH(R3,D4),LEN(R3)))

Где D4 - текстовая строка, которую мне нужно проверить, а R3 - слово, которое я ищу.

Я пытался объединить те, которые используют формулу IFS:

=TRIM(IFS($R$4=MID(D2,SEARCH($R$4,D2),LEN($R$4)),$R$4,$R$2=MID(D2,SEARCH($R$2,D2),LEN($R$2)),$R$2))

Но, как некоторые из вас уже получают, она возвращает # VALUE! ошибку, потому что, когда первая формула SEARCH выполняется и не находит соответствия, она возвращает # VALUE! ошибка и целая функция возвращает ее, несмотря на то, что на самом деле результат может быть 1 ИСТИНА.

Я много гуглил и, как я понимаю, мне нужно использовать формулу TRANSPOSE создать массив и каким-то образом получить оттуда результат, но, думаю, я еще не настолько умен.

Буду признателен за помощь в этом вопросе. Спасибо!

Ответы [ 2 ]

0 голосов
/ 07 января 2020

Если в столбце A расположены ячейки со случайными словами с нужными, а в столбце C перечислены нужные, вы можете использовать:

=LOOKUP(2^15,SEARCH($C$1:$C$3,A1,1),$C$1:$C$3)

и скопировать вниз. Отрегулируйте диапазон $C$1:$C$3 в соответствии с вашим фактическим диапазоном.

Редактировать Пояснения, как показано ниже.

Я не знаю происхождения этой формулы. Я впервые столкнулся с этой конструкцией на MrExcel, где ее разместил «Aladin Akyurek».

Часть 2 ^ 15 вычисляет до 32768, что больше (всего на одно число) максимального числа символов, которое ячейка Excel может содержать теоретически, т.е. 32767. Она была опубликована где-то пользователем с именем "XOR LX" и я использовал его с тех пор.

Конструкция использует способность функции LOOKUP иметь дело с массивами и ошибками, позволяющими получить довольно простое решение.

0 голосов
/ 07 января 2020

Используйте INDEX / AGGREGATE:

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

enter image description here

для вас:

=INDEX(R:R,AGGREGATE(15,7,ROW($R$2:$R$4)/(ISNUMBER(SEARCH($R$2:$R$4,D4))),1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...