Получить несколько тегов из Excel Cell - PullRequest
0 голосов
/ 07 ноября 2019

В одной ячейке у меня есть текст вида:

текст # tag1 другой текст, текст # другой тег и т. Д.

Мне нужно вытащить все теги в следующей ячейке. Тег может иметь разное количество символов. Мы предполагаем, что любой тег заканчивается на конце пробелом, то есть

# tag1 , тогда текст

можно извлечь с помощьюзапятая. Если вы также можете обрезать символы - было бы здорово.

Я могу найти один, но не все:

= MID (A2; SEARCH ("#"; A2) + 1; SEARCH (""; A2; SEARCH ("#"; A2) +1) - SEARCH ("" ; A2) - 1)

Есть идеи? Никаких макросов или внешних решений, нужен чистый excel.

1 Ответ

1 голос
/ 07 ноября 2019

Требуется Excel для Office 365, Excel для Office 365 для Mac, Excel 2019

Следующая формула массива вернет требуемый результат, если ваша исходная строка находится в ячейке A2.

=TEXTJOIN(", ",TRUE,IF(LEFT(TRIM(MID(SUBSTITUTE(" "&A2," ",REPT(" ",99)),ROW($A$1:$A$99)*99,99)))="#",TRIM(MID(SUBSTITUTE(" "&A2," ",REPT(" ",99)),ROW($A$1:$A$99)*99,99)),""))

Формула массива должна быть передана CTRL + SHIFT + ENTER .

Примечание: Разделитель аргументов в моей формуле - ",", тогда как OP использует ";".


Редактировать:


Для Excel 2016 и более старых версий

Может быть реализован следующий более длинный маршрут, который сначала извлечет результаты в отдельные ячейки. В ячейку C2 должна быть вставлена ​​следующая формула.

=TRIM(MID(SUBSTITUTE(SUBSTITUTE($A2," ",REPT(" ",99))," #","|",COLUMNS($C$1:C1)),FIND("|",SUBSTITUTE(SUBSTITUTE($A2," ",REPT(" ",99))," #","|",COLUMNS($C$1:C1)),1)+1,99))

Следует скопировать столько раз, сколько необходимо.

В столбце B может быть реализован подход CONCATENATE, как показано ниже (пример для 10ячеек).

=SUBSTITUTE(TRIM(CONCATENATE(C2," ",D2," ",E2," ",F2," ",G2," ",H2," ",I2," ",J2," ",K2))," ",", ")

Для копирования.

...