Se os seus exemplos forem realmente representativos, existe um padrão que pode ser extraído usando Expressões Regulares. Isso pode ser implementado no Excel usando o VBA.
Padrão:
- Início da string
- Série de dígitos seguida por um espaço
- Substring que começa com um ou mais dígitos e não contém outros dígitos
- um segundo Substring que começa com um ou mais dígitos e não contém outros dígitos
- vários grupos de vírgula de dígitos separados por espaços, com uma vírgula opcional (retorne o último)
Todos os seus exemplos mostram esse padrão. Aqui está uma função definida pelo usuário que irá lidar com isso:
Option Explicit
Function extrAddressPart(sAddr As String, lPart As Long)
Dim RE As Object, MC As Object
Const sPat As String = "^(\d+)\s+(\d+\D+)\s+(\d+\D+)\s+.*\s+([\d,]+)$"
Set RE = CreateObject("vbscript.regexp")
With RE
.Pattern = sPat
.MultiLine = True
.Global = False
If .Test(sAddr) = True Then
Set MC = .Execute(sAddr)
extrAddressPart = MC(0).submatches(lPart - 1)
End If
End With
End Function
É claro que, se o seu exemplo não for verdadeiramente representativo, essa solução não funcionará.