Aqui está uma função baseada em regex que deve fazer o truque. Cole-o em um módulo padrão que você inseriu no menu do editor do VBA. Você pode acessar o editor clicando em Visual Basic na guia Developer da faixa de opções. Em seguida, escolha Inserir - > Módulo padrão no menu.
Você também precisará definir uma referência à biblioteca Microsoft VBScript Regular Expressions 5.5
. Para fazer isso, clique em Ferramentas - > Referências no menu do editor. Role para baixo para encontrar a listagem e marque-a para definir a referência.
Especialistas em regex gostariam de melhorar o padrão que usei. Ele insere espaços extras em algumas cadeias de caracteres, com as quais eu me livrei ao usar a função TRIM
da planilha.
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