Требуется 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))," ",", ")
Для копирования.