Separar textos y números
- Jaime Franco Jimenez

- 19 sept 2023
- 2 Min. de lectura
Tenemos los siguientes datos:

Debemos de crear una columna con el texto, y, otra columna con los números.
Empecemos…
En la celda G2, ponemos LET, creamos una variable, la llamamos datos, usamos ENCOL, como argumento matriz, seleccionamos el rango B3:E11, probamos variable.
=LET(datos;ENCOL(B3:E11);datos)
Tenemos el modelo en una columna.

Sabemos que cada carácter en Excel, le corresponde un código, conocido como Unicode, o, código ASCII.
Muestro una tabla con los códigos del numero 0, 9, y las letras A y Z.

Creamos otra variable, la llamamos texto, usamos BYROW, como argumento array, ponemos la variable datos, como argumento función, ponemos LAMBDA, creamos una variable.
=LET(datos;ENCOL(B3:E11);texto;BYROW(datos;LAMBDA(x
Como argumento cálculo de LAMBDA, usamos el condicional SI, como argumento prueba lógica, usamos el operador lógico Y, como argumento valor logico1, usamos la función CODIGO, como argumento ponemos la variable “x”, comparamos con mayor o igual a 65, como argumento valor logico2, volvemos a poner la función CODIGO, como argumento ponemos la variable “x”, comparamos con menor o igual a 90, es decir, estamos buscando una letra entre la A y la Z.
=LET(datos;ENCOL(B3:E11);texto;BYROW(datos;LAMBDA(x;SI(Y(CODIGO(x)>=65; CODIGO(x)<=90)
Como argumento valor si verdadero, ponemos la variable “x”, como argumento valor si falso, ponemos un error.
Probamos variable.
=LET(datos;ENCOL(B3:E11);texto;BYROW(datos;LAMBDA(x;SI(Y(CODIGO(x)>=65; CODIGO(x)<=90);x;NOD())));texto)
Tenemos una matriz desbordada con cada letra, y, error donde no hay coincidencia.

Antes de BYROW, usamos ENCOL, como argumento matriz, es la expresión anterior, como argumento ignorar, ponemos 3, es decir, ignorar blancos y errores.
=LET(datos;ENCOL(B3:E11);texto;ENCOL(BYROW(datos;LAMBDA(x;SI(Y(CODIGO(x)>=65; CODIGO(x)<=90);x;NOD())));3);texto)
Ya tenemos las letras.

Vamos a crear otra variable, la llamamos número, la expresión es la misma que hemos usado para la variable texto, solo tenemos que cambiar el valor del operador lógico, como sigue:
=LET(datos;ENCOL(B3:E11);texto;ENCOL(BYROW(datos;LAMBDA(x;SI(Y(CODIGO(x)>=65; CODIGO(x)<=90);x;NOD())));3);numero;ENCOL(BYROW(datos;LAMBDA(x;SI(Y(CODIGO(x)>=48; CODIGO(x)<=57);x;NOD())));3)
Usamos el argumento calculo de LET, usamos APILARH, como argumento matriz1, ponemos la variable texto, como argumento matriz2, seleccionamos la variable número.
=LET(datos;ENCOL(B3:E11);texto;ENCOL(BYROW(datos;LAMBDA(x;SI(Y(CODIGO(x)>=65; CODIGO(x)<=90);x;NOD())));3);numero;ENCOL(BYROW(datos;LAMBDA(x;SI(Y(CODIGO(x)>=48; CODIGO(x)<=57);x;NOD())));3);APILARH(texto;numero))
Ya tenemos las dos columnas, una con los textos, y, otra con los números, pero, tenemos error donde no hay números que poner.

Usamos SI.ERROR, y, ponemos un texto en blanco donde hay error.
=LET(datos;ENCOL(B3:E11);texto;ENCOL(BYROW(datos;LAMBDA(x;SI(Y(CODIGO(x)>=65; CODIGO(x)<=90);x;NOD())));3);numero;ENCOL(BYROW(datos;LAMBDA(x;SI(Y(CODIGO(x)>=48; CODIGO(x)<=57);x;NOD())));3);SI.ERROR(APILARH(texto;numero);""))
Pues, ya lo tenemos.

Lo siguiente es dentro de la columna texto, imprimir las letras, excepto, la letra “G”, que le corresponde el código 71.
Lo único que debemos de hacer, es ir al operador lógico de la variable texto, y, añadir el argumento valor logico3, ponemos de nuevo la función CODIGO, como argumento ponemos la variable “x”, ponemos el símbolo de comparación indistinto, y, ponemos el valor 71.
=LET(datos;ENCOL(B3:E11);texto;ENCOL(BYROW(datos;LAMBDA(x;SI(Y(CODIGO(x)>=65; CODIGO(x)<=90;CODIGO(x)<>71);x;NOD())));3);numero;ENCOL(BYROW(datos;LAMBDA(x;SI(Y(CODIGO(x)>=48; CODIGO(x)<=57);x;NOD())));3);SI.ERROR(APILARH(texto;numero);""))
Aceptamos, y, ya lo tenemos.

Miguel Angel Franco




Comentarios