Получить несколько подстрок из ячейки по разделителю - PullRequest
0 голосов
/ 05 августа 2020

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

0#0#54232#5#123# ...

Теперь я хочу поместить каждое значение в отдельную ячейку. Я пробовал работать с функциями SEARCH, FIND, LEFT, MID и т. Д., Но все выглядит так неудобно, что я не могу заставить его работать. Моя идея заключалась в том, чтобы искать каждый # в тексте и получать каждую подстроку между ними. Но с 20+ значениями в одной ячейке это становится очень запутанным к концу.

РЕДАКТИРОВАТЬ: длина значений может варьироваться

Ответы [ 3 ]

2 голосов
/ 05 августа 2020

Вы можете использовать FILTERXML для разделения строки (это решение будет работать в Office 365, так как массивы Dynami c должны быть доступны):

=FILTERXML("<t><s>"&SUBSTITUTE(A1;"#";"</s><s>")&"</s></t>";"//s[string-length()>0]")

Split string using FILTERXML in Excel

There has recently been a nice question here on Stackoverflow that I highly recommend to read:

Excel - Извлечь подстроки из строки с помощью ФИЛЬТРА XML

2 голосов
/ 05 августа 2020

Вы можете использовать следующую формулу (также в более старых версиях Excel):

=IFERROR(FILTERXML("<t><s>"&SUBSTITUTE($A$1;"#";"</s><s>")&"</s></t>";"//s["&ROW()&"]");"")

введите описание изображения здесь

1 голос
/ 05 августа 2020

Я поместил вашу строку в ячейку B3, а в ячейку C2 я поместил следующую формулу:

=LEFT(B3;FIND.SPEC("#";B3)-1)

В ячейку C3 я поместил следующую формулу:

=SUBSTITUTE(B3;C2&"#";"";1)

Я перетаскивал все это вправо, и строка 2 дала мне результаты, которые вы ищете. (Возможно, вам придется добавить IfBlank() или IfError(), но вы понимаете, о чем я)

...