Me podrías ayudar con una macro que elimine datos no numéricos incluyendo espacios
1 respuesta
Respuesta de fejoal
1
1
fejoal, Por falta de tiempo para responder como me gusta hacerlo suspendo...
Asumiré que donde quieres eliminar datos no numéricos es una cadena de caracteres en una celda determinada. Para ello, efectivamente, puedes usar una macro, pero me parce más interesante una Función Definida por el Usuario (UDF) que devuelva en otra celda el resultado de la eliminación. Activa el editor de Visual Basic (presiona Alt+F11), inserta un nuevo módulo ("Insertar", "Módulo") y pega el siguiente código: Function dejaNum(LaCelda As String) As Long Application.Volatile Texto = Trim(LaCelda) Cadena = "" If Len(Texto) > 0 Then For posicion = 1 To Len(Texto) Carakter = Mid(Texto, posicion, 1) If IsNumeric((Carakter)) Then Cadena = Cadena & Carakter ElseIf Carakter = Application.International(xlDecimalSeparator) Then Cadena = Cadena & Application.International(xlDecimalSeparator) End If Next End If If Len(Cadena) = 0 Then dejaNum = 0 Else dejaNum = Cadena End If End Function Cierra el editor y graba el archivo. Bien, ahora tu archivo dispone de una fórmula más que devuelve en una celda el número depurado de caracteres que no lo sean. Así si el texto a depurar está en la celda B2, escribe en otra celda, lo siguiente: =DEJANUM(B2) Y obtendrás el resultado esperado. Al ser una fórmula, puedes tratarla como tal. Esto es puedes copiarla para otras celdas, liuego pegarla como valor, etc. --- Sin embargo, si deseas realmente una macro, la siguiente deja en la celda donde se está ejecutando (celda activa) el resultado depurado, "pisando" el valor original: Sub deja() LaCelda = ActiveCell.Value Texto = Trim(LaCelda) Cadena = "" If Len(Texto) > 0 Then For posicion = 1 To Len(Texto) Carakter = Mid(Texto, posicion, 1) If IsNumeric((Carakter)) Then Cadena = Cadena & Carakter ElseIf Carakter = Application.International(xlDecimalSeparator) Then Cadena = Cadena & Application.International(xlDecimalSeparator) End If Next End If If Len(Cadena) = 0 Then MsgBox "No hay Números en esta celda" Else ActiveCell.Value = Trim(Cadena) End If End Sub Bien, elije el método que te parezca má apropiado. - Ingresa al sitio www.porloschicos.com y, si quieres, presiona el botón de donación (es gratis). Confío en que lo harás.