Как разделить строку на символ пробела, если перед ней не стоит запятая - PullRequest
0 голосов
/ 12 февраля 2020

Я ищу способ разделения текста по пробелу, но только если перед пробелом не стоит запятая. Ниже приведены некоторые примеры строк

P3, 367 P5, 367 P5, 367

или

P3 P5 P5

или

P3, A6, A7 P4 P5 et c ...

Разделение их на символ пробела производится следующим образом

arr = VBA.Split(ActiveCell.Value, " ")

Требуемый результат выглядит следующим образом:

[P3, 367 P5, 367 P5, 367]

или

[P3 P5 P5]

или

[P3, A6, A7 P4 P5] et c ...

1 Ответ

5 голосов
/ 12 февраля 2020

Быстрый обходной путь

Замените все ", " чем-то особенным, которого нет в строке, например #, чтобы избежать вашего ", ", который вы хотите защитить от разделения. Итак,

P3, 367 P5, 367 P5, 367

превращается в

P3#367 P5#367 P5#367

Затем замените пробелы чем-то уникальным, например %, чтобы оно превратилось в

P3#367%P5#367%P5#367

Затем верните первую замену # обратно в исходное ", ", так что вы получите

P3, 367%P5, 367%P5, 367

И разделите на %, чтобы получить

P3, 367
P5, 367
P5, 367

В качестве альтернативы

Исследуйте, как использовать регулярные выражения в VBA: Как использовать регулярные выражения (Regex) в Microsoft Excel как в ячейке, так и в циклах .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...