Fórmula de Excel: eliminar caracteres numéricos de la celda -

Tabla de contenido

Fórmula genérica

(=TEXTJOIN("",TRUE,IF(ISERR(MID(A1,ROW(INDIRECT("1:100")),1)+0),MID(A1,ROW(INDIRECT("1:100")),1),"")))

Resumen

Para eliminar caracteres numéricos de una cadena de texto, puede utilizar una fórmula basada en la función TEXTJOIN. En el ejemplo que se muestra, la fórmula en C5 es:

=TEXTJOIN("",TRUE,IF(ISERR(MID(B5,ROW(INDIRECT("1:100")),1)+0),MID(B5,ROW(INDIRECT("1:100")),1),""))

Nota: esta es una fórmula de matriz y debe ingresarse con control + shift + enter, excepto en Excel 365.

Explicación

Excel no tiene una forma de convertir las letras en una cadena de texto a una matriz directamente en una fórmula. Como solución alternativa, esta fórmula utiliza la función MID, con la ayuda de las funciones FILA e INDIRECTO para lograr el mismo resultado. La fórmula en C5, copiada, es:

=TEXTJOIN("",TRUE,IF(ISERR(MID(B5,ROW(INDIRECT("1:100")),1)+0),MID(B5,ROW(INDIRECT("1:100")),1),""))

Esto parece bastante complicado, pero la esencia es que creamos una matriz de todos los caracteres en B5 y probamos cada carácter para ver si es un número. Si es así, descartamos el valor y lo reemplazamos con una cadena vacía (""). Si no, agregamos el carácter no numérico a una matriz "procesada". Finalmente, usamos la función TEXTJOIN (nueva en Excel 2019) para concatenar todos los caracteres juntos, ignorando los valores vacíos.

Trabajando desde adentro hacia afuera, la función MID se usa para extraer el texto en B5, un carácter a la vez. La clave es el fragmento FILA e INDIRECTO aquí:

ROW(INDIRECT("1:100"))

que hace girar una matriz que contiene 100 números como este:

(1,2,3,4,5,6,7,8… .99,100)

Nota: 100 representa el máximo de caracteres a procesar. Cambie para adaptarlo a sus datos o utilice la función LEN como se explica a continuación.

Esta matriz entra en la función MID como argumento núm_inicio . Para num_chars , usamos 1.

La función MID devuelve una matriz como esta:

("3";"4";"6";"5";"3";" ";"J";"i";"m";" ";"M";"c";"D";"o";"n";"a";"l";"d";"";"";"";… )

Nota: elementos adicionales en la matriz eliminados para facilitar la lectura.

A esta matriz, agregamos cero. Este es un truco simple que obliga a Excel a convertir el texto en un número. Los valores de texto numérico como "1", "2", "3", "4", etc. se convierten sin errores, pero los valores no numéricos fallarán y arrojarán un error #VALUE. Usamos la función SI con la función ISERR para detectar estos errores. Cuando vemos un error, sabemos que tenemos un carácter no numérico, entonces traemos ese carácter a la matriz procesada con otra función MID:

MID(B5,ROW(INDIRECT("1:100")),1)

Si no obtiene un error, sabemos que tenemos un número, por lo que insertamos una cadena vacía ("") en la matriz en lugar del número.

El resultado final de la matriz entra en la función TEXTJOIN como argumento text1. Como delimitador, usamos una cadena vacía ("") y para ignore_empty proporcionamos VERDADERO. TEXTJOIN luego concatena todos los valores no vacíos en la matriz y devuelve el resultado.

Longitud de matriz precisa

En lugar de codificar un número como 100 en INDIRECTO, puede usar la función LEN para construir una matriz con el número real de caracteres en la celda de esta manera:

MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)

LEN devuelve el recuento de caracteres en la celda como un número, que se usa en lugar de 100. Esto permite que la fórmula se amplíe automáticamente a cualquier número de caracteres.

Eliminar espacio extra

Cuando elimine caracteres numéricos, es posible que le queden caracteres de espacio adicionales. Para eliminar los espacios iniciales y finales, y normalizar los espacios entre palabras, puede ajustar la fórmula que se muestra en esta página dentro de la función TRIM:

=TRIM(formula)

Con SECUENCIA

En Excel 365, la nueva función SECUENCIA puede reemplazar el código FILA + INDIRECTO anterior:

=TEXTJOIN("",TRUE,IF(ISERR(MID(B5,SEQUENCE(LEN(B5)),1)+0),MID(B5,SEQUENCE(LEN(B5)),1),""))

Aquí, usamos SEQUENCE + LEN para construir una matriz de la longitud correcta en un paso.

Con LET

Podemos simplificar aún más esta fórmula con la función LET. Debido a que la matriz se crea dos veces arriba con SEQUENCE y LEN, podemos definir la matriz como una variable y crearla solo una vez:

=LET(array,SEQUENCE(LEN(B5)),TEXTJOIN("",TRUE,IF(ISERR(MID(B5,array,1)+0),MID(B5,array,1),"")))

Aquí el valor de la matriz se establece solo una vez, luego se usa dos veces dentro de la función MID.

Articulos interesantes...