Извлечь несколько слов во фразе

У меня есть эта формула для извлечения определенного слова, которое начинается с заданных символов «CCLVL». Однако он работает нормально, мне также нужна формула для извлечения слов, начинающихся с «GCFAC» или «CLINK».

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

=TRIM(LEFT(SUBSTITUTE(MID(A2,FIND("CCLVL",A2),LEN(A2))," ",REPT(" ",100)),100))

В описании есть CCLVL123456? Если да, то это третья сторона CCLVL123456 Содержит ли описание GCFAC4567 Если да, то это третья сторона
Содержит ли описание CLINK95182 Если да, то это третья сторона

Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
1
0
264
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Общая идея здесь состоит в том, чтобы разрезать строку на массив слов, используя FILTERXML и некоторый xpath, чтобы возвращать только те слова из этого массива, которые нас интересуют. К счастью, есть функция starts-with(), которую мы можем использовать в структуре or:

=FILTERXML("<t><s>"&SUBSTITUTE(A1," ","</s><s>")&"</s></t>","//s[starts-with(., 'CCLVL') or starts-with(., 'GCFAC') or starts-with(., 'CLINK')]")

В Excel365 это вернет вертикальный массив, поэтому вы можете использовать TRANSPOSE() или TEXTJOIN() в сочетании. Кроме того, если у вас нет Excel365, вы можете использовать INDEX() для извлечения элементов из массива по порядку.


В приведенном ниже примере я использовал:

=TEXTJOIN(",",,FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(A1,"?","")," ","</s><s>")&"</s></t>","//s[starts-with(., 'CCLVL') or starts-with(., 'GCFAC') or starts-with(., 'CLINK')]"))


Чтобы лучше понять вышеизложенное, смотрите этот пост.

Ваше объяснение каждой строки действительно превосходно. Мы, все еще изучающие Excel, должны читать ваши ответы сверху донизу построчно.

Harun24hr 26.12.2020 14:43

Формула УДИВИТЕЛЬНАЯ, как раз то, что мне было нужно!! Спасибо Вам большое.

BastropButtercup 07.01.2021 01:34

Можно ли объединить эту формулу с другой формулой, чтобы сделать следующее: Посмотрите в ячейку C2, и если ячейка начинается с ABC или DEF, поместите содержимое ячейки, иначе выполните формулу выше. Если ячейка A2 или ячейка C2 не содержат ни того, ни другого, оставьте поле пустым. (обратите внимание, ячейка B2 содержит формулу)

BastropButtercup 07.01.2021 17:18

ДОГАДАТЬСЯ!! Вот формула, которую я получил ------ =ЕСЛИ(ЧИСЛО(ПОИСК("abc",A7)),A7,ЕСЛИ(ЧИСЛО(ПОИСК("DEF",A‌​7)),A7, ЕСЛИОШИБКА(@FILT‌​ERXML("<t><s>"&SUBST‌​ITUTE(B7," ","</s><s>")&"</s></t>","//s [начинается с (., 'CCLVL') или начинается с (., 'GCFAC') или начинается с (., 'CLINK') или начинается с (., 'CCQWC') или начинается с (. , 'CCQWA')]"),"")))

BastropButtercup 07.01.2021 17:59

Другие вопросы по теме