Tabla de contenido
El tutorial muestra cómo realizar la validación de datos en Excel utilizando expresiones regulares con la ayuda de una función RegexMatch personalizada.
Cuando se trata de restringir la entrada de datos del usuario en hojas de cálculo de Excel, la validación de datos es indispensable. ¿Quiere permitir sólo números o fechas en una celda determinada? ¿O limitar los valores de texto a una longitud específica? ¿O tal vez no permitir tiempos fuera de un rango determinado? No hay problema, todo esto se puede hacer fácilmente con criterios de validación preestablecidos o personalizados. Pero ¿qué pasa si quiero permitir sólo direcciones de correo electrónico válidas o cadenas que coincidan con un¿un patrón específico? No es posible. ¿Dices Regex? Hmm... ¡podría funcionar!
Cómo hacer la validación de datos de Excel con Regex
Lamentablemente, ninguna de las funciones integradas de Excel admite expresiones regulares, y la Validación de datos no es una excepción. Para poder validar la entrada de celdas mediante expresiones regulares, primero debe crear una función Regex personalizada. Otra complicación es que las funciones definidas por el usuario de VBA no pueden servirse directamente a la Validación de datos: necesitará un mediador en forma de fórmula con nombre.
Teniendo en cuenta lo anterior, describamos brevemente los pasos a seguir para validar datos en Excel utilizando expresiones regulares:
- Cree una función Regex personalizada que compruebe si un valor de entrada coincide con una expresión regular.
- Defina un nombre para su fórmula Regex.
- Configure una regla de Validación de Datos basada en la fórmula nombrada.
- Copie la configuración de validación en tantas celdas como desee.
Parece un plan... ¡Intentemos ponerlo en práctica!
Validación de datos de Excel mediante expresiones regulares personalizadas
Este ejemplo aborda un caso muy común: cómo permitir sólo los valores de un patrón específico.
Supongamos que guarda algunos códigos SKU en su hoja de cálculo y desea asegurarse de que sólo los códigos que coincidan con un patrón determinado entren en la lista. Siempre que cada SKU conste de 2 grupos de caracteres separados por un guión, el primer grupo incluya 3 letras mayúsculas y el segundo grupo - 3 dígitos, puede identificar dichos valores utilizando la siguiente expresión regular.
Patrón : ^[A-Z]{3}-\d{3}$
Tenga en cuenta que el inicio (^) y el final ($) de la cadena están anclados, por lo que no se pueden introducir en una celda caracteres distintos de los del patrón.
1. Añadir una función Regex Match personalizada
Comience por insertar la función RegExpMatch en su libro de trabajo. El código ya está escrito por nuestros gurús de Excel, por lo que sólo tiene que copiarlo de la página enlazada anteriormente y pegarlo en su editor VBA.
Aquí está la sintaxis de la función para su referencia:
RegExpMatch(texto, patrón, [match_case])Dónde:
- Texto (obligatorio) - una cadena de origen (en nuestro contexto - una celda validada).
- Patrón (obligatorio) - una expresión regular que debe coincidir.
- Caso_partido (opcional) - tipo de coincidencia. TRUE u omitido - distingue entre mayúsculas y minúsculas; FALSE - no distingue entre mayúsculas y minúsculas.
Sugerencia: Si usted es un usuario de nuestra Ultimate Suite, entonces usted puede hacer Regex Validación de Datos en Excel sin añadir ningún código VBA a sus libros de trabajo. Sólo tiene que aprovechar una función personalizada AblebitsRegexMatch incluido con nuestras herramientas Regex.
2. Crear una fórmula con nombre
En la hoja de cálculo de destino, seleccione la celda A1 (independientemente de su contenido y de la celda que vaya a validar), pulse Ctrl + F3 para abrir el Administrador de nombres y defina un nombre para esta fórmula:
=RegExpMatch(Sheet1!A1, "^[A-Z]{3}-\d{3}$")
O puede introducir la expresión regular en alguna celda (A2 en este ejemplo) y proporcionar $A$2 al segundo argumento:
=RegExpMatch(Hoja1!A1, Hoja1!$A$2)
Para que la fórmula funcione correctamente, asegúrese de utilizar una referencia relativa para la variable texto (A1) y referencia absoluta para patrón ($A$2).
Dado que nuestra fórmula está pensada para validar números SKU, la denominamos en consecuencia: Validar_SKU .
Nota importante: cuando defina la fórmula, compruebe que el campo el primer argumento se refiere a la celda seleccionada actualmente Por ejemplo, si la celda A1 está seleccionada en la hoja, ponga A1 en el primer argumento (según nuestras recomendaciones); si B2 está seleccionada, entonces use B2 para el primer argumento, y así sucesivamente. En realidad no importa qué referencia concreta utilice siempre que coincida con la celda seleccionada en ese momento.
Para obtener instrucciones paso a paso, consulte Cómo crear una fórmula con nombre en Excel.
3. Configurar la validación de datos
Seleccione la primera celda a comprobar (A5 en nuestro caso) y cree una regla de validación de datos personalizada basada en la fórmula nombrada. Para ello, haga lo siguiente:
- Haga clic en Datos tab> Validación de datos .
- En el Permitir seleccione A medida .
- Introduzca la fórmula siguiente en la casilla correspondiente.
=Validar_SKU
- Deseleccione el Ignorar el espacio en blanco de lo contrario la regla no funcionará.
Opcionalmente, puede escribir un mensaje de error personalizado que se mostrará cuando se introduzcan datos no válidos en una celda.
Si crees que necesitas los pasos detallados, aquí tienes: Cómo configurar la Validación de Datos personalizada en Excel.
4. Copiar Validación de Datos a más celdas
Para copiar la configuración de validación a más celdas, esto es lo que tienes que hacer:
- Seleccione la celda con validación de datos y pulse Ctrl + C para copiarla.
- Seleccione otras celdas que desee validar, haga clic con el botón derecho del ratón sobre ellas, haga clic en Pegado especial y elija la opción Validación opción.
- Haga clic en OK .
Encontrará más información en Cómo copiar la validación de datos.
Ahora, cada vez que alguien intente introducir un SKU no válido en cualquiera de las celdas validadas, aparecerá el siguiente mensaje de advertencia:
Validación de correo electrónico con Regex
Para realizar la validación de correo electrónico, comience por escribir una expresión regular que coincida con una dirección de correo electrónico.
Patrón : ^[\w\.\-]+@[A-Za-z0-9]+[A-Za-z0-9\.\-]*[A-Za-z0-9]+\.[A-Za-z]{2,24}$
Para obtener una explicación detallada de la sintaxis, consulte Regex para buscar direcciones de correo electrónico válidas.
Y ahora, especifique los criterios de validación realizando los pasos ya conocidos:
- Introduzca la expresión regular anterior en B2.
- Seleccione la celda A1 y defina un nombre llamado Validar_correo_electrónico que se refiere:
=RegExpMatch(Hoja1!A1, Hoja1!$B$2)
- Para la celda B5, aplique una Validación de Datos personalizada utilizando la fórmula siguiente. Es esencial que la fórmula Ignorar el espacio en blanco no debe estar seleccionada.
=Validar_correo_electrónico
Además, puede configurar un mensaje de error personalizado que solicite al usuario que introduzca una dirección de correo electrónico válida.
- Copie la regla en las celdas de abajo.
Si una dirección de correo electrónico que introduce en una celda validada no coincide con un patrón regex, aparecerá la siguiente alerta:
Validación de contraseñas mediante expresiones regulares
Al utilizar expresiones regulares para la validación de contraseñas, lo primero que hay que decidir es qué debe comprobar exactamente la expresión regular. A continuación se ofrecen algunos ejemplos que pueden servirle de orientación.
Una contraseña debe tener al menos 6 caracteres y sólo puede contener letras (mayúsculas o minúsculas) y dígitos:
Patrón : ^[A-Za-z0-9]{6,}$
La contraseña debe tener como mínimo 6 caracteres e incluir al menos una letra y un dígito:
Patrón : ^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{6,}$
La contraseña debe tener como mínimo 6 caracteres e incluir al menos una letra mayúscula, una letra minúscula y un dígito:
Patrón : ^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)[A-Za-z\d]{6,}$
La contraseña debe tener como mínimo 6 caracteres e incluir al menos una letra, un dígito y un carácter especial:
Patrón : ^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&_-])[A-Za-z\d@$!%*#?&_-]{6,}$
Una vez establecido el patrón, puede pasar a configurar la Validación de datos:
- Introduzca la expresión regular de su contraseña en C2.
- Selecciona la celda A1 y crea una fórmula con nombre llamada Validar_contraseña :
=RegExpMatch(Hoja1!A1, Hoja1!$C$2)
- Para la celda C5, cree una regla de validación personalizada con la siguiente fórmula. Recuerde desmarcar la casilla Ignorar el espacio en blanco casilla de verificación.
=Validar_contraseña
- Copie la regla en tantas celdas como desee.
Ahora, puede añadir con seguridad nuevas contraseñas a la lista. Si una cadena de entrada no coincide con la regex, la siguiente alerta le recordará qué tipos de valores se aceptan:
La validación de datos Regex no funciona
Si la Validación de Datos Regex no funciona en su Excel, lo más probable es que se deba a una de las siguientes razones.
Falta la función RegExpMatch
Antes de aplicar la Validación de Datos, asegúrese de insertar el código de la función RegExpMatch en su libro de trabajo.
Expresión regular incorrecta
Para asegurarse de que su expresión regular funciona como se espera, puede introducir una fórmula RegExpMatch en alguna celda y examinar los resultados. Para obtener más información, consulte Excel Coincidencia de expresiones regulares con ejemplos.
Para analizar y depurar sus expresiones regulares, puede utilizar servicios gratuitos de comprobación de expresiones regulares en línea, como RegEx101 o RegExr.
Fórmula con nombre incorrecto
Una razón muy común de fallo de validación de datos es una fórmula con nombre Regex que hace referencia a una celda incorrecta. En todos los ejemplos, recomendamos definir una fórmula que haga referencia a A1:
=RegExpMatch(A1, regex)
Esto sólo funciona si la celda A1 está activo al definir un nombre y un referencia relativa (sin el signo $).
La idea es que una referencia relativa especificada en la fórmula (A1) cambiará automáticamente en función de la posición relativa de la celda validada. En otras palabras, la celda A1 se elige sólo por comodidad y coherencia. De hecho, se puede seleccionar la celda B1 y hacer referencia a B1, seleccionar la celda C1 y hacer referencia a C1, etc. Lo fundamental es que la fórmula celda de referencia debe ser el célula activa .
Para comprobar si su fórmula con nombre es correcta, seleccione cualquier celda de su hoja de cálculo, abra el Gestor de nombres y vea a qué celda apunta la fórmula. Si hace referencia a la celda seleccionada actualmente, la fórmula es correcta. En caso contrario, deberá cambiar la referencia en el primer argumento.
En la captura de pantalla de abajo, la celda A7 está seleccionada, lo que significa que una fórmula con nombre debe tener A7 en el primer argumento. El segundo argumento ($A$2) se refiere a la regex - esta referencia se supone que debe permanecer constante, por lo que se bloquea con el signo $.
Opción de ignorar espacios en blanco seleccionada
Al configurar una regla de validación de datos personalizada, es importante desmarcar la opción Ignorar el espacio en blanco De lo contrario, la regla no funcionará por el siguiente motivo:
Si no se encuentra ninguna coincidencia, la función RegExpMatch devuelve FALSE. Con la función Ignorar el espacio en blanco seleccionada, FALSE equivale a vacío y se ignora.
Una solución alternativa es indicar explícitamente que la fórmula debe devolver TRUE:
=RegExpMatch(...)=TRUE
Eso es cómo hacer Validación de Datos en Excel usando expresiones regulares. Te agradezco por leer y espero verte en nuestro blog la próxima semana!
Cuaderno de prácticas para descargar
Ejemplos de validación de datos Regex (archivo .xlsm)