Cómo eliminar texto o números de una celda de Excel

  • Compartir Este
Michael Brown

Este tutorial le enseñará cómo separar texto de números en Excel utilizando fórmulas nativas y funciones personalizadas. También aprenderá cómo dividir texto y números en dos columnas separadas.

Imagínese lo siguiente: recibe datos sin procesar para analizarlos y descubre que en una columna se mezclan números con texto. En la mayoría de las situaciones, sin duda será más conveniente tenerlos en columnas separadas para examinarlos más detenidamente.

Si trabaja con datos homogéneos, probablemente podría utilizar las funciones IZQUIERDA, DERECHA y MEDIA para extraer el mismo número de caracteres de la misma posición. Pero ese es un escenario ideal para pruebas de laboratorio. En la vida real, lo más probable es que tenga que tratar con datos distintos en los que los números aparecen antes del texto, después del texto o entre el texto. Los ejemplos siguientes ofrecen soluciones exactamente para estocaso.

    Cómo eliminar el texto y mantener los números en las celdas de Excel

    La solución funciona en Excel 365, Excel 2021 y Excel 2019

    Microsoft Excel 2019 introdujo algunas funciones nuevas que no están disponibles en versiones anteriores, y vamos a utilizar una de esas funciones, a saber, TEXTJOIN, para eliminar los caracteres de texto de una celda que contiene números.

    La fórmula genérica es:

    TEXTJOIN("", TRUE, IFERROR(MID( célula ROW(INDIRECT( "1:"&LEN( célula ))), 1) *1, ""))

    En Excel 365 y 2021, éste también funcionará:

    TEXTJOIN("", TRUE, IFERROR(MID( célula SECUENCIA(LEN( célula )), 1) *1, ""))

    A primera vista, las fórmulas pueden parecer un poco intimidantes, pero funcionan :)

    Por ejemplo, para eliminar texto de los números de A2, introduzca una de las fórmulas siguientes en B2 y, a continuación, cópiela en tantas celdas como necesite.

    En Excel 365 - 2019:

    =TEXTJOIN("", TRUE, IFERROR(MID(A2, ROW(INDIRECT( "1:"&LEN(A2))), 1) *1, ""))

    En Excel 2019, debe introducirse como una fórmula de matriz con Ctrl + Mayús + Intro . En Excel de matriz dinámica, funciona como una fórmula normal completada con la tecla Intro.

    En Excel 365 y 2021:

    =TEXTJOIN("", TRUE, IFERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1, ""))

    Como resultado, se eliminan todos los caracteres de texto de una celda y se mantienen los números:

    Cómo funciona esta fórmula:

    Para entender mejor la lógica, empecemos a investigar la fórmula desde dentro:

    Utilice ROW(INDIRECT("1:"&LEN(cadena))) o SEQUENCE(LEN(cadena)) para crear una secuencia de números correspondiente al número total de caracteres de la cadena de origen y, a continuación, introduzca esos números secuenciales en la función MID como números iniciales. En B2, esta parte de la fórmula tiene el siguiente aspecto:

    MID(A2, {1;2;3;4;5;6;7;8;9;10;11;12;13;14;15}, 1)

    La función MID extrae cada carácter de A2 empezando por el primero y los devuelve como una matriz:

    {"2";"1";"0";" ";"S";"u";"n";"s";"e";"t";" ";"R";"o";"a";"d"}

    Esta matriz se multiplica por 1. Los valores numéricos sobreviven sin cambios, mientras que multiplicar un carácter no numérico produce un error #¡VALOR!

    {2;1;0;#VALOR!;#VALOR!;#VALOR!;#VALOR!;#VALOR!;#VALOR!;#VALOR!;#VALOR!;#VALOR!;#VALOR!;#VALOR!}

    La función IFERROR se encarga de estos errores y los sustituye por cadenas vacías:

    {2;1;0;"";"";"";"";"";"";"";"";"";"";"";""}

    Este array final se sirve a la función TEXTJOIN, que concatena los valores no vacíos del array ( ignorar_vacío a TRUE) utilizando una cadena vacía ("") como delimitador:

    TEXTJOIN("", TRUE, {2;1;0;"";"";"";"";"";"";"";"";"";"";"";""})

    Consejo. Para Excel 2016 - 2007 también existe una solución, pero la fórmula es mucho más compleja. Puedes encontrarla en este tutorial: Cómo extraer números en Excel.

    Función personalizada para eliminar el texto de los números

    La solución funciona para todas las versiones de Excel

    Si utiliza una versión antigua de Excel o considera que las fórmulas anteriores son demasiado difíciles de recordar, nada le impide crear su propia función con una sintaxis más sencilla y un nombre fácil de usar, como por ejemplo EliminarTexto La función definida por el usuario (UDF) puede escribirse de dos maneras:

    Código VBA 1:

    Aquí, miramos uno a uno cada carácter de la cadena fuente y comprobamos si es numérico o no. Si es un número, el carácter se añade a la cadena resultante.

    Function RemoveText(str As String ) Dim sRes As String sRes = "" For i = 1 To Len(str) If True = IsNumeric(Mid(str, i, 1)) Then sRes = sRes & Mid(str, i, 1) End If Next i RemoveText = sRes End Function

    Código VBA 2:

    El código crea un objeto para procesar una expresión regular. Usando RegExp, eliminamos todos los caracteres que no sean dígitos 0-9 de la cadena fuente.

    Function RemoveText(str As String ) As String With CreateObject ( "VBScript.RegExp" ) .Global = True .Pattern = "[^0-9]" RemoveText = .Replace(str, "" ) End With End Function

    En hojas de cálculo pequeñas, ambos códigos funcionarán igual de bien. En hojas de cálculo grandes en las que la función se llama cientos o miles de veces, el código 2 que utiliza VBScript.RegExp funcionará más rápido.

    Los pasos detallados para insertar el código en su libro de trabajo se pueden encontrar aquí: Cómo insertar código VBA en Excel.

    Sea cual sea el enfoque que elija, desde la perspectiva del usuario final, la función para borrar texto y dejar números es así de sencilla:

    EliminarTexto(cadena)

    Por ejemplo, para eliminar caracteres no numéricos de la celda A2, la fórmula en B2 es:

    =QuitarTexto(A2)

    Cópialo en la columna y obtendrás este resultado:

    Nota: tanto las fórmulas nativas como las funciones personalizadas generan un valor cadena numérica Para convertirlo en un número, multiplique el resultado por 1, o añada cero, o envuelva la fórmula en la función VALOR. Por ejemplo:

    =QuitarTexto(A2) + 0

    =VALOR(EliminarTexto(A2))

    Cómo eliminar números de una cadena de texto en Excel

    La solución funciona en Excel 365, Excel 2021 y Excel 2019

    Las fórmulas para eliminar números de una cadena alfanumérica son muy similares a las del ejemplo anterior.

    Para Excel 365 - 2019:

    TEXTJOIN("", TRUE, IF(ISERR(MID( célula ROW(INDIRECT( "1:"&LEN( célula ) )), 1) *1), MID( célula ROW(INDIRECT("1:"&LEN( célula ))), 1), ""))

    En Excel 2019, recuerde que debe convertirlo en un fórmula de matriz pulsando a la vez las teclas Ctrl + Mayús + Intro.

    Para Excel 365 y 2021:

    TEXTJOIN("", TRUE, IF(ISERROR(MID( célula SECUENCIA(LEN( célula 1) *1), MID( célula SECUENCIA(LEN( célula )), 1), ""))

    Por ejemplo, para eliminar los números de una cadena en A2, la fórmula es:

    =TEXTJOIN("", TRUE, IF(ISERR(MID(A2, ROW(INDIRECT("1:"&LEN(A2) )), 1) *1), MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1), ""))

    O

    =TEXTJOIN("", TRUE, IF(ISERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1), MID(A2, SEQUENCE(LEN(A2)), 1), ""))

    Como resultado, se eliminan todos los números de una celda y se mantienen los caracteres de texto:

    Como se muestra en la captura de pantalla anterior, la fórmula elimina los caracteres numéricos de cualquier posición de una cadena: al principio, al final y en medio. Sin embargo, hay una advertencia: si una cadena comienza con un número seguido de un espacio se conserva ese espacio, lo que produce un problema de espacios a la izquierda (como en B2).

    Para deshacerse del exceso espacios antes del texto envuelva la fórmula en la función TRIM de la siguiente manera:

    =TRIM(TEXTJOIN("", TRUE, IF(ISERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1), MID(A2, SEQUENCE(LEN(A2)), 1), "")))

    ¡Ahora, sus resultados son absolutamente perfectos!

    Cómo funciona esta fórmula:

    En esencia, la fórmula funciona igual que la explicada en el ejemplo anterior. La diferencia es que, del array final servido a la función TEXTJOIN, hay que eliminar números, no texto. Para hacerlo, utilizamos la combinación de las funciones IF e ISERROR.

    Como recordarás, MID(...)+0 genera una matriz de números y errores #¡VALOR! que representan caracteres de texto en las mismas posiciones:

    {2;1;0;#VALOR!;#VALOR!;#VALOR!;#VALOR!;#VALOR!;#VALOR!;#VALOR!;#VALOR!;#VALOR!;#VALOR!;#VALOR!}

    La función ISERROR captura los errores y pasa la matriz resultante de valores booleanos a IF:

    {FALSO;FALSO;FALSO;VERDADERO;VERDADERO;VERDADERO;VERDADERO;VERDADERO;VERDADERO;VERDADERO;VERDADERO;VERDADERO;VERDADERO;VERDADERO;VERDADERO}

    Cuando la función IF ve TRUE (un error), inserta el carácter de texto correspondiente en la matriz procesada con la ayuda de otra función MID. Cuando la función IF ve FALSE (un número), lo sustituye por una cadena vacía:

    {"";"";"";" "; "S"; "u"; "n"; "s"; "e"; "t";" "; "R"; "o"; "a"; "d"}

    Este array final se pasa a TEXTJOIN, para que concatene los caracteres del texto y emita el resultado.

    Función personalizada para eliminar números del texto

    La solución funciona para todas las versiones de Excel

    Teniendo en cuenta que una fórmula robusta debe mantenerse simple, voy a compartir el código de la función definida por el usuario (UDF) para eliminar cualquier carácter numérico.

    Código VBA 1:

    Function RemoveNumbers(str As String ) Dim sRes As String sRes = "" For i = 1 To Len(str) If False = IsNumeric(Mid(str, i, 1)) Then sRes = sRes & Mid(str, i, 1) End If Next i RemoveNumbers = sRes End Function

    Código VBA 2:

    Function RemoveNumbers(str As String ) As String With CreateObject ( "VBScript.RegExp" ) .Global = True .Pattern = "[0-9]" RemoveNumbers2 = .Replace(str, "" ) End With End Function

    Como en el caso de la función EliminarTexto, el segundo código es mejor utilizarlo en hojas de cálculo grandes para optimizar el rendimiento.

    Una vez añadido el código a su libro de trabajo, puede eliminar todos los caracteres numéricos de una celda utilizando esta función personalizada:

    EliminarNúmeros(cadena)

    En nuestro caso, la fórmula en B2 es:

    =QuitarNúmeros(A2)

    Para recortar los espacios iniciales, si los hay, anide la función personalizada dentro de TRIM como lo haría con una fórmula nativa:

    =TRIM(QuitarNúmeros(A2))

    Dividir números y texto en columnas separadas

    En situaciones en las que se desea separar texto y números en dos columnas, estaría bien poder hacer el trabajo con una sola fórmula, ¿de acuerdo? Para ello, simplemente fusionamos el código de la fórmula EliminarTexto y EliminarNúmeros en una sola función, denominada DividirNúmerosDeTexto o simplemente Dividir o lo que quieras :)

    Código VBA 1:

    Function SplitTextNumbers(str As String , is_remove_text As Boolean ) As String Dim sNum, sText, sChar As String sCurChar = sNum = sText = "" For i = 1 To Len(str) sCurChar = Mid(str, i, 1) If True = IsNumeric(sCurChar) Then sNum = sNum & sCurChar Else sText = sText & sCurChar End If Next i If True = is_remove_text Then SplitTextNumbers = sNum Else SplitTextNumbers = sText End If EndFunción

    Código VBA 2:

    Function SplitTextNumbers(str As String , is_remove_text As Boolean ) As String With CreateObject ( "VBScript.RegExp" ) .Global = True If True = is_remove_text Then .Pattern = "[^0-9]" Else .Pattern = "[0-9]" End If SplitTextNumbers = .Replace(str, "" ) End With End Function

    Nuestra nueva función personalizada requiere dos argumentos:

    DividirNúmerosDeTexto(cadena, is_remove_text)

    Dónde is_remove_text es un valor booleano que indica los caracteres que deben eliminarse:

    • TRUE o 1 - elimina el texto y mantiene los números
    • FALSE o 0 - elimina los números y mantiene el texto

    Para nuestro conjunto de datos de muestra, las fórmulas adoptan esta forma:

    Para eliminar caracteres no numéricos:

    =DividirNúmerosDeTexto(A2, TRUE)

    Para borrar caracteres numéricos:

    =DividirNúmerosDeTexto(A2, FALSE)

    Sugerencia: para evitar el posible problema de los espacios a la izquierda, recomiendo incluir siempre la fórmula que elimina los números en la función TRIM:

    =TRIM(DividirNúmerosDeTexto(A2, FALSE))

    Herramienta especial para eliminar números o texto

    Para aquellos a los que no les gusta complicar las cosas innecesariamente, mostraré nuestra propia forma de eliminar texto o números en Excel.

    Suponiendo que nuestro Ultimate Suite está añadido a su cinta de Excel, esto es lo que debe hacer:

    1. En el Datos de Ablebits en la pestaña Texto grupo, haga clic en Eliminar > Eliminar caracteres .

  • En el panel del complemento, seleccione el rango de origen, elija la opción Eliminar juegos de caracteres y elija Texto caracteres o Numérico caracteres en la lista desplegable.
  • Hit Eliminar y disfruta del resultado :)
  • Sugerencia: si los resultados contienen espacios a la izquierda, la herramienta Recortar espacios los eliminará en un abrir y cerrar de ojos.

    Así es como se eliminan los caracteres de texto o numéricos de una cadena en Excel. Te doy las gracias por leer y ¡espero verte en nuestro blog la semana que viene!

    Descargas disponibles

    Eliminar texto o números en Excel - ejemplos (archivo .xlsm)

    Ultimate Suite - versión de prueba (archivo .exe)

    Michael Brown es un entusiasta de la tecnología dedicado y apasionado por simplificar procesos complejos utilizando herramientas de software. Con más de una década de experiencia en la industria de la tecnología, ha perfeccionado sus habilidades en Microsoft Excel y Outlook, así como en Google Sheets y Docs. El blog de Michael está dedicado a compartir su conocimiento y experiencia con otros, brindando consejos y tutoriales fáciles de seguir para mejorar la productividad y la eficiencia. Ya sea un profesional experimentado o un principiante, el blog de Michael ofrece información valiosa y consejos prácticos para aprovechar al máximo estas herramientas de software esenciales.