Separar texto en letras, números y caracteres especiales: 3 enfoques con REGEX y sin REGEX

Un miembro plantea un reto interesante: dado un texto que mezcla letras, números y caracteres especiales (por ejemplo "abc123!@#"), ¿cómo separar cada tipo en columnas distintas? El problema parece sencillo, pero tiene trampa: funciones como BYROW o MAP no pueden desbordar varios valores por iteración, lo que genera errores de #CALC!.

La comunidad responde con tres enfoques muy distintos.

El primero usa REGEXEXTRACCION + LAMBDA + MAP. Se crea una función LAMBDA reutilizable que recibe el patrón regex y lo aplica con MAP a todo el rango:

``
=LET(
L; LAMBDA(z;
MAP(A2:A4; LAMBDA(x;
CONCAT(REGEXEXTRACCION(x; z; 1))
))
);
APILARH(
L("[A-Za-z]");
--L("\\d+");
L("[^A-Za-z0-9]")
)
)
`

El segundo enfoque usa REGEXREEMPLAZAR de forma ultracompacta. Inspirada en una solución de JvdV (referente mundial en REGEX para Excel), esta fórmula usa una constante matricial de tres patrones para eliminar lo que NO es cada tipo:

`
=LET(
a; REGEXREEMPLAZAR(A2:A4; {"\PL"; "\D"; "[^\W_]"}; );
SI.ERROR(--a; a)
)
`

Los patrones \PL (no-letras), \D (no-dígitos) y [^\W_] (no-especiales) hacen todo el trabajo. El SI.ERROR(--a; a) convierte los números de texto a número real.

Para quienes no tienen acceso a las funciones REGEX, un tercer enfoque sin REGEX usa REDUCE + FILTRAR + CODIGO, descomponiendo cada carácter con EXTRAE + SECUENCIA y clasificándolos por rangos de CODIGO:

`
=EXCLUIR(
REDUCE(0; Z19:Z21; LAMBDA(a; v;
LET(
F; FILTRAR; C; CONCAT; CD; CODIGO;
_t; EXTRAE(v; SECUENCIA(LARGO(v)); 1);
APILARV(a; APILARH(
C(F(_t; (CD(_t)>=65) (CD(_t)<=122)));
C(F(_t; (CD(_t)>=48) (CD(_t)<=57)));
C(F(_t; (CD(_t)<48) + (CD(_t)>122) + ((CD(_t)>57) * (CD(_t)<65))))
))
)
));
1
)
`

Tres caminos al mismo destino: REGEX moderno y compacto, REGEX con LAMBDA` reutilizable, o funciones clásicas para quienes aún no tienen REGEX disponible.

El reto

Un miembro plantea algo aparentemente sencillo: dado un texto que mezcla letras, números y caracteres especiales (por ejemplo abc123 seguido de símbolos), separar cada tipo en su propia columna. La trampa: funciones como BYROW o MAP no pueden desbordar varios valores por iteración, y aparece el temido error #CALC!. La comunidad respondió con tres enfoques muy distintos.

Enfoque 1: REGEX con LAMBDA y MAP

El primero se apoya en REGEXEXTRACCION dentro de una LAMBDA reutilizable. La idea es definir una función que reciba un patrón y lo aplique con MAP a todo el rango, devolviendo con CONCAT solo los caracteres que casan. Se invoca tres veces —una para las letras, otra para los dígitos y otra para los caracteres especiales— y se unen los resultados con APILARH. Un doble signo menos delante del bloque de dígitos convierte ese texto en número real. La ventaja: la misma LAMBDA sirve para los tres tipos, solo cambia el patrón.

Enfoque 2: REGEXREEMPLAZAR ultracompacto

Inspirado en una solución de JvdV (referente mundial de REGEX en Excel), el segundo enfoque le da la vuelta al problema: en vez de extraer cada tipo, elimina todo lo que no es ese tipo. Con una constante matricial de tres patrones —uno que borra lo que no son letras, otro lo que no son dígitos y otro lo que no son especiales— REGEXREEMPLAZAR resuelve las tres columnas en una sola pasada. Después, envolver el resultado en SI.ERROR para intentar convertirlo a número deja los dígitos como valor numérico y respeta el texto. Es la versión más corta de las tres.

Enfoque 3: sin REGEX, con CODIGO y rangos

¿Y si tu Excel todavía no tiene las funciones REGEX? El tercer enfoque, más artesanal, descompone cada texto carácter a carácter con EXTRAE y SECUENCIA, y clasifica cada uno según su valor de CODIGO (el número que identifica al carácter): un rango para las letras, otro para los dígitos y el resto para los especiales. REDUCE recorre las filas acumulando el resultado, FILTRAR selecciona los caracteres de cada clase y CONCAT los vuelve a unir. Más largo, pero totalmente compatible sin REGEX.

Funciones clave

  • REGEXEXTRACCION y REGEXREEMPLAZAR: extraen o eliminan texto según un patrón; el corazón de los dos primeros enfoques.
  • MAP y LAMBDA: aplican una misma lógica a cada elemento del rango de forma reutilizable.
  • APILARH: une en horizontal las columnas de letras, números y especiales.
  • SI.ERROR: convierte a número lo que se puede y respeta el texto.
  • EXTRAE, SECUENCIA y CODIGO: la base del enfoque sin REGEX, para descomponer y clasificar carácter a carácter.
  • REDUCE y FILTRAR: iteran y seleccionan en la versión clásica.

Conclusión

Tres caminos al mismo destino: REGEX moderno y compacto, REGEX reutilizable con LAMBDA, y funciones clásicas para quien aún no tiene REGEX disponible. La elección depende de tu versión de Excel y de cuánto valoras la brevedad frente a la compatibilidad. Este tipo de retos de texto aparece constantemente en la comunidad de Influexcel, donde una misma pregunta acaba enseñando tres técnicas distintas.

Más casos con estas funciones

Más contenido de Excel en InflueXcel