2009-09-16 2 views
0

В настоящее время я работаю над проектом vba, в котором конечный пользователь копирует/вставляет длинные строки текст в рабочий лист и код для анализа данных из мусора в эти строки и организуют их из них.регулярное выражение в vba excel ищет группы из строки

Строки всегда будут разной длины и имеют различное количество пробелов между данными. Однако они всегда будут сгруппированы одинаково (например, сначала цена, некоторое белое пространство, цена за единицу, некоторое пустое пространство и номер идентификатора). Есть ли регулярное выражение, которое просто вытаскивает группы (обе буквы и цифры) из пробелов?

ответ

2

Если вы хотите просто удалить разделители пробелов подряд, вы можете использовать Text To Columns.

 MyRange.TextToColumns Destination:=MyRange.Cells(1), _ 
     DataType:=xlDelimited, _ 
     ConsecutiveDelimiter:=True, _ 
     Space:=True

Тогда вы могли бы прочитать ваши ценности из ячеек диапазона назначения, MyRange.Cells (1) .CurrentRegion

2

В VBA:

Split(inputstring) 

Вы также можете установить другой разделитель, но он использует пространство по умолчанию.

У этого dupe есть дополнительная информация.

1

Я не знаю, как повторно синтаксис работает в Excel VBA, но в питоне (который PERL-подобный), самое простое регулярное выражение будет:

\S+ 

Это будет соответствовать любой последовательности не -whitespace, а в python я бы использовал метод findall для захвата всех совпадений из документа.

Если excel VBA не является простым способом сделать это, я бы сердечно рекомендовал отличать excel для python (но я признаю, что excel отлично подходит для синтаксического анализа).

Смежные вопросы