Validació de dades d'Excel mitjançant expressions regulars (Regex)

  • Comparteix Això
Michael Brown

El tutorial mostra com fer la validació de dades a Excel mitjançant expressions regulars amb l'ajuda d'una funció personalitzada RegexMatch.

Quan es tracta de restringir l'entrada de l'usuari als fulls de treball d'Excel, la validació de dades és indispensable. Voleu permetre només números o dates en una cel·la determinada? O limitar els valors del text a una longitud específica? O potser no permetre temps fora d'un interval determinat? Cap problema, tot això es pot fer fàcilment amb criteris de validació preestablerts o personalitzats. Però, què passa si només vull permetre adreces de correu electrònic vàlides o cadenes que coincideixin amb un patró específic? Ai, això no és possible. Regex dius? Hmm... això podria funcionar!

    Com fer la validació de dades d'Excel amb Regex

    Lamentablement, cap de les funcions integrades d'Excel admet execucions regulars i la validació de dades no ho és excepció. Per poder validar l'entrada de cel·les mitjançant expressions regulars, primer cal que creeu una funció d'expressió regular personalitzada. Una altra complicació és que les funcions definides per l'usuari de VBA no es poden servir directament per a la validació de dades; necessitareu un mediador en forma de fórmula anomenada.

    Tenint en compte l'anterior, descrivim breument els passos que cal seguir. per validar les dades a Excel mitjançant expressions regulars:

    1. Creeu una funció de Regex personalitzada que comprove si un valor d'entrada coincideix amb una expressió regular.
    2. Definiu un nom per a la vostra fórmula d'expressió regular.
    3. Configura una regla de validació de dades basada en la fórmula anomenada.
    4. Copieu ella configuració de validació a tantes cel·les com vulgueu.

    Sembla un pla? Intentem implementar-lo a la pràctica!

    Validació de dades d'Excel mitjançant expressions regulars personalitzades

    Aquest exemple aborda un cas molt comú: com permetre només els valors d'un patró específic.

    Suposant que conserveu alguns codis SKU al vostre full de treball i voleu assegurar-vos que només els codis que coincideixen amb un patró determinat entren a la llista. Sempre que cada SKU consta de 2 grups de caràcters separats amb un guionet, el primer grup inclou 3 lletres majúscules i el segon grup, 3 dígits, podeu identificar aquests valors mitjançant l'expressió regular següent.

    Patró. : ^[A-Z]{3}-\d{3}$

    Tingueu en compte que l'inici (^) i el final ($) de la cadena estan ancorats, de manera que no hi ha caràcters que no siguin a la cadena. es pot introduir un patró en una cel·la.

    1. Afegiu una funció de concordança RegEx personalitzada

    Comenceu inserint la funció RegExpMatch al vostre llibre de treball. Els nostres gurus d'Excel ja han escrit el codi, així que només cal copiar-lo des de la pàgina enllaçada anterior i enganxar-lo al vostre editor de VBA.

    Aquí teniu la sintaxi de la funció com a referència:

    RegExpMatch(text , patró, [match_case])

    On:

    • Text (obligatori) - una cadena d'origen (en el nostre context - una cel·la validada).
    • Patró (obligatori): una expressió regular que coincideixi.
    • Match_case (opcional) - tipus de coincidència. TRUE o omès - majúscules -sensible; FALSE: no distingeix entre majúscules i minúscules.

    Consell. Si sou usuari de la nostra Suite Ultimate, podeu fer la validació de dades Regex a Excel sense afegir cap codi VBA als vostres llibres de treball. Només heu d'aprofitar una funció personalitzada AblebitsRegexMatch inclosa amb les nostres eines d'expressió regular.

    2. Creeu una fórmula anomenada

    Al vostre full de treball objectiu, seleccioneu la cel·la A1 (independentment del seu contingut i independentment de quina cel·la vulgueu validar), premeu Ctrl + F3 per obrir el Gestor de noms i definiu un nom. per a aquesta fórmula:

    =RegExpMatch(Sheet1!A1, "^[A-Z]{3}-\d{3}$")

    O podeu introduir l'expressió regular en alguna cel·la (A2 en aquest exemple) i proporcionar $A$2 al segon argument:

    =RegExpMatch(Sheet1!A1, Sheet1!$A$2)

    Perquè la fórmula funcioni correctament, assegureu-vos d'utilitzar una referència relativa per a l'argument text (A1) i una referència absoluta per al patró ($A$2).

    Atès que la nostra fórmula està pensada per validar els números de SKU, l'anomenem en conseqüència: Validate_SKU .

    Nota important! Quan definiu la fórmula, comproveu que el primer argument fa referència a la cel·la seleccionada actualment , en cas contrari, la fórmula no funcionarà. Per exemple, si la cel·la A1 està seleccionada al full, poseu A1 al primer argument (segons les nostres recomanacions); si se selecciona B2, feu servir B2 per al primer argument, i així un. Realment no importa quina referència en particular utilitzeu sempre que coincideixi amb la cel·la seleccionada actualment.

    Per al pas a pas.instruccions, consulteu Com fer una fórmula amb nom a Excel.

    3. Configureu la validació de dades

    Seleccioneu la primera cel·la que voleu comprovar (A5 en el nostre cas) i feu una regla de validació de dades personalitzada basada en la fórmula anomenada. Per fer-ho, feu el següent:

    1. Feu clic a la pestanya Dades > Validació de dades .
    2. A Permetre llista desplegable, seleccioneu Personalitzat .
    3. Introduïu la fórmula següent al quadre corresponent.

      =Validate_SKU

    4. Desmarqueu l'opció Ignora en blanc , en cas contrari, la vostra regla no funcionarà.

    Opcionalment, podeu escriure un missatge d'error personalitzat que es mostrarà quan s'introdueixen dades no vàlides en una cel·la.

    Si creieu que necessiteu els passos detallats, aquí teniu: Com configurar la validació de dades personalitzada a Excel.

    4. Copieu la validació de dades a més cel·les

    Per copiar la configuració de validació a més cel·les, això és el que heu de fer:

    1. Seleccioneu la cel·la amb validació de dades i premeu Ctrl + C per copieu-lo.
    2. Seleccioneu altres cel·les que vulgueu validar, feu-hi clic amb el botó dret, feu clic a Enganxa especial i trieu l'opció Validació .
    3. Feu clic a D'acord .

    Podeu trobar més informació a Com copiar la validació de dades.

    Ara, cada vegada que algú intenta introduir un SKU no vàlid a qualsevol de les cel·les validades, el següent apareixerà un missatge d'advertència:

    Validació del correu electrònic amb Regex

    Per dur a terme la validació del correu electrònic, comenceuamb l'escriptura d'una expressió regular que coincideixi amb una adreça de correu electrònic.

    Patró : ^[\w\.\-]+@[A-Za-z0-9]+[A-Za -z0-9\.\-]*[A-Za-z0-9]+\.[A-Za-z]{2,24}$

    Per a l'explicació detallada de la sintaxi, si us plau vegeu Regex per fer coincidir les adreces de correu electrònic vàlides.

    I ara, especifiqueu els criteris de validació realitzant els passos ja coneguts:

    1. Introduïu l'expressió regular anterior a B2.
    2. Seleccioneu la cel·la A1 i definiu un nom anomenat Validate_Email que faci referència a:

      =RegExpMatch(Sheet1!A1, Sheet1!$B$2)

    3. Per a la cel·la B5, apliqueu la validació de dades personalitzada mitjançant la fórmula següent. És essencial que l'opció Ignora en blanc no estigui seleccionada.

      =Validate_Email

      A més, podeu configurar un missatge d'error personalitzat que demani a l'usuari que introdueixi una adreça de correu electrònic vàlida.

    4. Copieu la regla a les cel·les següents.

    Si una adreça de correu electrònic que introduïu en una cel·la validada no coincideix amb un patró d'expressió regular, l'alerta següent emergent:

    Validació de contrasenyes mitjançant expressions regulars

    Quan s'utilitza regex per a la validació de contrasenyes, el primer que cal decidir és exactament quina ha de comprovar la vostra expressió regular. Aquests són alguns exemples que us poden posar en el bon camí.

    Una contrasenya ha de tenir almenys 6 caràcters i només pot contenir lletres (majúscules o minúscules) i dígits:

    Patró : ^[A-Za-z0-9]{6,}$

    La contrasenya ha de tenir un mínim de 6 caràcters i incloure almenys una lletra iun dígit:

    Patró : ^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{6 ,}$

    La contrasenya ha de tenir com a mínim 6 caràcters i incloure almenys una lletra majúscula, una minúscula i un dígit:

    Patró : ^(?= .*[A-Z])(?=.*[a-z])(?=.*\d)[A-Za-z\d]{6,}$

    La contrasenya ha de tenir com a mínim 6 caràcters llarg i inclou almenys una lletra, un dígit i un caràcter especial:

    Patró : ^(?=.*[A-Za-z])(?=.*\d )(?=.*[@$!%*#?&_-])[A-Za-z\d@$!%*#?&_-]{6,}$

    Amb el patró establert, podeu passar a configurar la validació de dades:

    1. Introduïu l'expressió regular de la contrasenya a C2.
    2. Seleccioneu la cel·la A1 i creeu una fórmula anomenada Validate_Password :

      =RegExpMatch(Sheet1!A1, Sheet1!$C$2)

    3. Per a la cel·la C5, creeu una regla de validació personalitzada amb la fórmula següent. Recordeu desmarcar la casella de selecció Ignora en blanc .

      =Validate_Password

    4. Copieu la regla a tantes cel·les com vulgueu.

    Ara podeu afegir noves contrasenyes a la llista amb seguretat. Si una cadena d'entrada no coincideix amb l'expressió regular, l'alerta següent us recordarà quins tipus de valors s'accepten:

    La validació de dades regex no funciona

    Si la validació de dades regex no funciona al vostre Excel , el més probable és que sigui per un dels motius següents.

    Falta la funció RegExpMatch

    Abans d'aplicar la validació de dades, assegureu-vos d'inserir el codi de la funció RegExpMatch al vostre llibre de treball.

    Regular incorrecteexpression

    Per assegurar-vos que la vostra expressió regular funciona com s'esperava, podeu introduir una fórmula RegExpMatch en alguna cel·la i examinar els resultats. Per obtenir més informació, vegeu Coincidència d'expressions regulars d'Excel amb exemples.

    Per analitzar i depurar les vostres expressions regulars, podeu utilitzar serveis de proves d'expressions regulars en línia gratuïtes, com ara RegEx101 o RegExr.

    Fórmula amb nom incorrecte

    Una raó molt habitual de fallada de validació de dades és una fórmula anomenada Regex que fa referència a una cel·la incorrecta. En tots els exemples, recomanem definir una fórmula referida a A1:

    =RegExpMatch(A1, regex)

    Això només funciona si la cel·la A1 està activa quan es defineix un nom i un <15 S'utilitza>referència relativa (sense el signe $).

    La idea és que una referència relativa especificada a la fórmula (A1) canviarà automàticament en funció de la posició relativa de la cel·la validada. En altres paraules, la cel·la A1 es tria només per comoditat i coherència. De fet, podeu seleccionar la cel·la B1 i fer referència a B1, seleccionar la cel·la C1 i fer referència a C1, etc. El més important és que la cel·la de referència hauria de ser la cel·la activa .

    Per comprovar si la fórmula amb el nom és correcta, seleccioneu qualsevol cel·la del vostre full de treball, obriu el Nom Gestor i vegeu a quina cel·la apunta la fórmula. Si es refereix a la cel·la seleccionada actualment, la fórmula és correcta. En cas contrari, hauríeu de canviar la referència al primer argument.

    A la captura de pantallaa continuació, la cel·la A7 està seleccionada, és a dir, una fórmula anomenada hauria de tenir A7 al primer argument. El segon argument ($A$2) es refereix a l'expressió regular; se suposa que aquesta referència es manté constant, de manera que es bloqueja amb el signe $.

    Opció Ignora en blanc seleccionada

    Quan configureu una regla de validació de dades personalitzada, és important desmarcar la casella de selecció Ignora en blanc . En cas contrari, la regla no funcionarà pel motiu següent:

    Si no es troba cap coincidència, la funció RegExpMatch retorna FALSE. Amb l'opció Ignora en blanc seleccionada, FALSE equival a en blanc i s'ignora.

    Una solució alternativa indica explícitament que la fórmula hauria de retornar TRUE:

    =RegExpMatch(…)=TRUE

    Així és com fer la validació de dades a Excel mitjançant expressions regulars. Us agraeixo la lectura i espero veure-us al nostre bloc la setmana vinent!

    Quader de pràctiques per descarregar

    Exemples de validació de dades regex (fitxer .xlsm)

    Michael Brown és un entusiasta de la tecnologia dedicat amb una passió per simplificar processos complexos mitjançant eines de programari. Amb més d'una dècada d'experiència en la indústria tecnològica, ha perfeccionat les seves habilitats en Microsoft Excel i Outlook, així com en Google Sheets i Docs. El bloc de Michael es dedica a compartir els seus coneixements i experiència amb altres persones, oferint consells i tutorials fàcils de seguir per millorar la productivitat i l'eficiència. Tant si sou un professional experimentat com si sou un principiant, el bloc de Michael ofereix valuoses idees i consells pràctics per treure el màxim profit d'aquestes eines de programari essencials.