Limpiar una cadena de texto - extraer solo letras y números en excel

Cómo puedo Limpiar una cadena de texto - extraer solo letras y números en excel, Ejemplo

Amazon**283%  resultado Amazon283

skla=$"245a resultado: skla245a

Cabe mencionar que no siempre es el mismo texto y no siempre son los mismos caracteres especiales dentro del texto.

Respuesta
2

[Hola Fátima. Bienvenida a TodoExpertos

¿Lo quieres con fórmula o puede ser con código VBA?

¿Qué versión de excel tienes?

----------------

Mientras te recomiendo lo siguiente:

https://youtu.be/QqbCkHsetXU 

https://youtu.be/dy9w9zbkCaw 

https://youtu.be/JXILeCgQDpU 

Sal u dos

Dante Amor

Utiliza la siguiente función:

Function solonumerosyletras(texto As String)
  With CreateObject("VBScript.RegExp")
    .Pattern = "[^0-9A-Za-z]"
    .Global = True
    solonumerosyletras = .Replace(texto, "")
  End With
End Function

Sigue las Instrucciones para una Función

  1. Abre tu libro de excel
  2. Para abrir VBa y poder pegar la función, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la función
  5. En cualquier celda utiliza la función, como cualquier otra función de excel

Ejemplo:

=solonumerosyletras(A2)


Recomendaciones:

Sal u dos

Dante Amor

¡Muchas Gracias! me ha funcionado, gracias por compartir su conocimiento

Encantado de ayudarte, gra cias por comentar.

Sal u dos

Dante Amor

1 respuesta más de otro experto

Respuesta
4

Este tema lo podrás resolver con fórmulas o con macros.

Te paso la solución con Macros

Desde ficha Programador o Desarrollador, Visual Basic entrarás al Editor de macros. Inserta un módulo y allí copia el siguiente código. Ajusta las referencias de celdas a tu modelo.(Ver imagen)

Sub Limpia_Cadena()
'x Elsamatilde
'se ejecuta en la hoja activa, celda B1  ... AJUSTAR CELDA DE INICIO
x = Range("B" & Rows.Count).End(xlUp).Row     'ultima fila
For i = 1 To x       'recorre la col B desde la fila 1
    cadena = ""
    For y = 1 To Len(Cells(i, 2))     'recorre los caracteres de cada celda
        caracter = Mid(Cells(i, 2), y, 1)
        If caracter <> "" Then
            cara = Asc(caracter)
            If (cara > 47 And cara < 59) Or (cara > 64 And cara < 91) Or _
               (cara > 96 And cara < 123) Then
               cadena = cadena & caracter
            End If
        End If
    Next y
    'se coloca el texto resultante en la col C ... AJUSTAR DESTINO
    Cells(i, 3) = cadena
Next i
MsgBox "Fin de la conversión de textos."
End Sub

Y así se verá en la columna resultante que luego podrás pegar sobre la original, sin necesidad de fórmulas.

Con la instrucción:

Cara = Asc(caracter)

se evalúa si cada caracter se encuentra entre los que corresponden a números y letras (tanto en mayúscula como en minúscula) en el listado de caracteres ASCII.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas