Вот функция на основе регулярных выражений, которая должна сделать свое дело. Вставьте его в стандартный модуль, который вы вставили из меню редактора VBA. Вы можете получить доступ к редактору, щелкнув Visual Basic на вкладке « Разработчик » на ленте. Затем выберите Вставить -> Стандартный модуль в меню.
Вам также нужно будет установить ссылку на библиотеку Microsoft VBScript Regular Expressions 5.5
. Для этого нажмите Сервис -> Ссылки в меню редактора. Прокрутите вниз, чтобы найти список и отметьте его, чтобы установить ссылку.
Эксперты Regex хотели бы улучшить шаблон, который я использовал. Он вставляет лишние пробелы в некоторые строки, от которых я успешно избавился, используя функцию TRIM
рабочего листа.
Function ReNSpace(text As String)
Dim regex As New RegExp
regex.Pattern = "(?:(\D+)?(\d+))|(?:(\D+)(\d+)?)"
regex.Global = True
regex.IgnoreCase = True
' Test if a match is found
If regex.Test(text) = True Then
ReNSpace = WorksheetFunction.Trim(regex.Replace(text, "$1 $2 $3 $4"))
Else
ReNSpace = CVErr(xlErrValue)
End If
Set regex = Nothing
End Function