Macro visual basic para buscar y reemplazar

Quiero hacer un botón en excel que cuando lo oprima este me haga 3 reemplazos, en una columna tengo una serie de datos con coordenadas GPS así "7.888923333333334, -72.48043166666666" que quiero que haga la macro, que INICIALMENTE me reemplace "," (coma) por "" (nada) es decir la elimine, una vez hecho esto, me reemplace "." (punto) por "," (coma), una vez hecho esto, me remplace por ultima vez "-" (negativo) por "" (nada) es suprima todos los signos negativos. Pondré un ejemplo de lo que hago manualmente para que vean el paso a paso.

1) 7.888923333333334, -72.48043166666666

2) 7.888923333333334 -72.48043166666666

3) 7,888923333333334 -72,48043166666666

4) 7,888923333333334 72,48043166666666

Si se fijan, en el paso 4 en todo el texto solo hay un espacio, entre el 4 y el 72, sería genial que aparte de reemplazar los datos así, tambien la macro separe los datos en dos columnas definidas por el carácter " " (espacio).

1 respuesta

Respuesta
1

Te anexo la macro. Pon tus datos en la columna A. El resultado quedará en las columnas B y C

Sub Reemplazar()
'
' Por.Dante Amor
'
    Columns("B:C").ClearContents
    u = Range("A" & Rows.Count).End(xlUp).Row
    With Range("A1:A" & u)
        .Replace What:=",", Replacement:="", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        .Replace What:=".", Replacement:=",", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        .Replace What:="-", Replacement:="", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        .TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _
            TextQualifier:=xlNone, ConsecutiveDelimiter:=True, Tab:=False, Semicolon _
            :=False, Comma:=False, Space:=True, Other:=False, FieldInfo:=Array( _
            Array(1, 2), Array(2, 2)), TrailingMinusNumbers:=True
    End With
    Columns("B:C").EntireColumn.AutoFit
    MsgBox "Fin"
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Feliz Año 2018

.

¡Gracias! 

Lo hice por mi cuenta y me funcionó, quedó así.

Sub datos_GPS()
'
' datos_GPS Macro
'

'
Range("B2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Replace What:=",", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="-", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:=" ", Replacement:=" ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:=" ", Replacement:=" ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.End(xlUp).Select
Range("B2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.TextToColumns Destination:=Range("B2"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
:=" ", FieldInfo:=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
End Sub

De acuerdo. ¿Probaste mi macro?

Tiene las mismas indicaciones, solamente revisa el código contra el código que te generó la grabadora de macros para que observes cómo puedes crearlo u optimizarlo, utilizando el código que la misma grabadora de macros te genera. No olvides valorar el apoyo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas