Validar datos en Excel con máscaras de formato (sin VBA)

Validar datos en Excel con máscaras de formato (sin VBA)

Validar que un código, una matrícula o un NIF siguen el formato correcto suele acabar en una macro. No hace falta: con una función personalizada construida sobre LAMBDA se puede comprobar una máscara de formato entera sin escribir una línea de VBA.

En el tutorial se monta paso a paso:

- Qué es una máscara de formato y cómo se describe (NN-12345-67, AAA-0000, …)
- Recorrer el texto carácter a carácter con funciones matriciales
- Encapsular todo en una LAMBDA reutilizable en cualquier libro
- Devolver un resultado claro: cumple o no cumple, y por qué

Útil para cualquier hoja donde entren datos a mano y haga falta que salgan limpios.

El fichero

Te llevas el libro con la función ya montada y los ejemplos de máscara del vídeo.

Validar que un código, una matrícula o una referencia siguen el formato correcto suele acabar en una macro. No hace falta: con funciones matriciales y una LAMBDA se puede comprobar una máscara de formato entera sin escribir una línea de VBA.

El problema

Tienes una columna donde la gente teclea datos a mano y necesitas que salgan limpios. El formato esperado es, por ejemplo, (123) 456-7890: paréntesis, tres números, cierre, espacio, tres números, guion y cuatro números. Cualquier fila que se salga de ahí debería avisar.

La máscara se describe con un lenguaje mínimo de tres símbolos:

  • n — en esa posición tiene que haber un número.
  • t — en esa posición tiene que haber un texto.
  • # — da igual lo que haya, cualquier valor vale.

Y todo lo demás (paréntesis, guiones, espacios) tiene que coincidir exactamente.

Solución paso a paso

La idea de fondo es sencilla: deletrear la máscara y el valor, y luego compararlos carácter a carácter.

1. Deletrear la máscara

EXTRAE saca, a partir de una posición, tantos caracteres como le digas. Si en vez de una posición le pasas una matriz de posiciones, devuelve una matriz de caracteres. Y esa matriz la genera SECUENCIA, con tantas filas como caracteres tenga la máscara (que te dice LARGO):

=EXTRAE(mascara;SECUENCIA(LARGO(mascara);1);1)

El resultado es la máscara desplegada, un carácter por celda. Si acortas la máscara, la lista se acorta sola.

2. Deletrear el valor a validar

Exactamente la misma fórmula, cambiando la referencia por la celda del dato. Ya tienes dos columnas alineadas: lo que esperas y lo que hay.

3. Convertir a número lo que deba ser número

Aquí aparece el primer tropiezo, y es el que hace que el ejercicio tenga gracia. Al deletrear con EXTRAE, todo sale como texto, también los dígitos. Así que una comprobación de "esto es un número" fallaría siempre.

La solución es una pasada previa con MAP sobre las dos matrices: si el carácter de la máscara es t o n, y además el carácter del valor se puede multiplicar por uno sin dar error, entonces se guarda multiplicado por uno (o sea, convertido a número de verdad). Si no, se deja tal cual.

4. La comparación, con MAP y LAMBDA

Ahora sí, la comprobación real. MAP recibe las dos matrices y una LAMBDA con dos parámetros: x para el carácter de la máscara e y para el del valor. Dentro se encadenan cuatro condiciones:

  • Si x es n y y es un número → correcto.
  • Si x es t y y es texto → correcto.
  • Si x es # → correcto siempre, haya lo que haya.
  • Si no, se exige coincidencia exacta: x igual a y → correcto. En cualquier otro caso, error.

Un truco de escritura que el vídeo recomienda expresamente: cada vez que empiezas un SI, abre y cierra su paréntesis en ese momento. Con cuatro condicionales anidados te ahorra el baile de paréntesis del final.

5. Un único resultado por fila

Cuando todo cuadra, el resultado es una matriz de "correcto". Para resumirla en una sola celda se limpia (los correctos se dejan en blanco) y se une con CONCAT. Si el texto resultante queda vacío, es que no había ni un fallo.

Ojo con un caso: si el valor es más largo o más corto que la máscara, aparece el error de valor no disponible. Se envuelve con SI.ERROR para que devuelva error de formato en lugar de un mensaje feo.

6. Empaquetarlo en una LAMBDA

El último paso es meter todos esos cálculos intermedios dentro de una sola LAMBDA con nombre, del estilo CHECKMASCARA(mascara;valor). A partir de ahí no repites el desarrollo en cada fila: llamas a la función y ya está, reutilizable en cualquier libro.

Funciones clave

  • EXTRAE — saca caracteres desde una posición; con una matriz de posiciones, deletrea.
  • SECUENCIA y LARGO — generan las posiciones justas, sin números escritos a mano.
  • MAP y LAMBDA — recorren las dos matrices en paralelo y aplican la lógica de validación.
  • CONCAT y SI.ERROR — condensan el resultado en una única respuesta legible.

Conclusión

Esto no pretende sustituir a las expresiones regulares ni a VBA. Lo que consigue es algo distinto y muy práctico: un validador de formatos que vive en la propia hoja, sin código, sin habilitar macros y sin depender de nadie para mantenerlo.

Y el ejercicio salió de una propuesta del grupo de WhatsApp de InflueXcel. Si te apetece ver de dónde nacen estas cosas, y preguntar cuando algo no te cuadra, ahí se debate a diario.

Más casos con estas funciones

Más contenido de Excel en InflueXcel