miércoles, 13 de septiembre de 2017

Poner comas luego de los números para preparar una geocodificacion en Google

A veces necesitamos tener la información de una dirección en formato "Google" para que pueda ser geocodificada.
Google entiende la información de direcciones muy bien cuando tiene este formato:

calle numero, colonia, municipio, estado, país

Por ejemplo

Hidalgo 28, Centro, Cuauhtemoc, CDMX, México

Pero a veces puede estar de la siguiente forma, o muchas otras:

Hidalgo 28 Centro, Cuauhtemoc, CDMX, México
Hidalgo Num 28 Centro, Cuauhtemoc, CDMX, México

Etc.

Esto requiere un proceso de limpieza.

El siguiente código permite que estando la información en Excel, insertemos la necesaria coma, es decir:
CIRCUITO LAS MISIONES 219

Pase a

CIRCUITO LAS MISIONES 219, 


El código es este

Sub InsertarComasLuegoDeNumero()
'
    Palabra = ActiveCell.Value
    largo = Len(Palabra)
    
    PrimerNumero = "NO"
    NuevaPalabra = ""
    
    Numeros = 0
    For n = 1 To largo
     letra = Mid$(Palabra, n, 1)
           If letra = "0" Or letra = "1" Or letra = "2" Or letra = "3" Or letra = "4" Or letra = "5" Or letra = "6" Or letra = "7" Or letra = "8" Or letra = "9" Then
            Numeros = Numeros + 1
             If Numeros = 1 Then
              NuevaPalabra = NuevaPalabra + ", "
             End If
           End If
         NuevaPalabra = NuevaPalabra + letra
    Next
    
    ActiveCell.Value = NuevaPalabra
        
    ActiveCell.Offset(1, 0).Range("A1").Select
    
End Sub



Evidentemente si lo quisieramos hacer para un solo renglón no tendría ningun caso, pero supongamos que lo queremos hacer para muchos renglones, digamos 100, solo encerramos el codigo en un for-next, como sigue:



Sub InsertarComasLuegoDeNumero()
'
for m=1 to 100

    Palabra = ActiveCell.Value
    largo = Len(Palabra)
    
    PrimerNumero = "NO"
    NuevaPalabra = ""
    
    Numeros = 0
    For n = 1 To largo
     letra = Mid$(Palabra, n, 1)
           If letra = "0" Or letra = "1" Or letra = "2" Or letra = "3" Or letra = "4" Or letra = "5" Or letra = "6" Or letra = "7" Or letra = "8" Or letra = "9" Then
            Numeros = Numeros + 1
             If Numeros = 1 Then
              NuevaPalabra = NuevaPalabra + ", "
             End If
           End If
         NuevaPalabra = NuevaPalabra + letra
    Next
    
    ActiveCell.Value = NuevaPalabra
        
    ActiveCell.Offset(1, 0).Range("A1").Select

next
    
End Sub