Cuprins
Tutorialul arată cum se face validarea datelor în Excel folosind expresii regulate cu ajutorul unei funcții personalizate RegexMatch.
Când vine vorba de restricționarea introducerii de date de către utilizator în foile de lucru Excel, validarea datelor este indispensabilă. Doriți să permiteți doar numere sau date într-o anumită celulă? Sau să limitați valorile textului la o anumită lungime? Sau poate să nu permiteți orele în afara unui anumit interval? Nicio problemă, toate acestea pot fi realizate cu ușurință cu ajutorul criteriilor de validare predefinite sau personalizate. Dar dacă vreau să permit doar adrese de e-mail valide sau șiruri de caractere care se potrivesc cu unUn model specific? Din păcate, nu este posibil. Spui Regex? Hmm... ar putea funcționa!
Cum se face validarea datelor Excel cu Regex
Din păcate, niciuna dintre funcțiile încorporate în Excel nu acceptă regexuri, iar Validarea datelor nu face excepție. Pentru a putea valida intrările din celule folosind expresii regulate, trebuie să creați mai întâi o funcție Regex personalizată. O altă complicație este că funcțiile definite de utilizator VBA nu pot fi servite direct la Validarea datelor - veți avea nevoie de un mediator sub forma unei formule numite.
Având în vedere cele de mai sus, haideți să prezentăm pe scurt pașii care trebuie urmați pentru a valida datele în Excel folosind regexuri:
- Creați o funcție Regex personalizată care verifică dacă o valoare de intrare se potrivește cu o expresie regulată.
- Definiți un nume pentru formula Regex.
- Configurați o regulă de validare a datelor bazată pe formula numită.
- Copiați setările de validare în câte celule doriți.
Sună ca un plan? Haideți să încercăm să-l punem în practică!
Validarea datelor Excel utilizând expresii regulate personalizate
Acest exemplu abordează un caz foarte comun - cum să permiteți numai valorile unui anumit model.
Să presupunem că păstrați câteva coduri SKU în foaia de calcul și doriți să vă asigurați că numai codurile care corespund unui anumit model intră în listă. Cu condiția ca fiecare SKU să fie format din 2 grupuri de caractere separate prin cratimă, primul grup incluzând 3 litere majuscule, iar al doilea grup - 3 cifre, puteți identifica astfel de valori folosind regexul de mai jos.
Model : ^[A-Z]{3}-\d{3}$
Vă rugăm să observați că începutul (^) și sfârșitul ($) șirului sunt ancorate, astfel încât într-o celulă nu pot fi introduse alte caractere decât cele din tipar.
1. Adăugați o funcție personalizată Regex Match
Începeți cu inserarea funcției RegExpMatch în registrul de lucru. Codul este deja scris de către guru Excel, așa că trebuie doar să îl copiați de pe pagina cu linkul de mai sus și să îl lipiți în editorul VBA.
Iată sintaxa funcției pentru referință:
RegExpMatch(text, model, [match_case])Unde:
- Text (obligatoriu) - un șir de caractere sursă (în contextul nostru - o celulă validată).
- Model (obligatoriu) - o expresie regulată care să corespundă.
- Cazul_de_corespondență (opțional) - tipul de potrivire. TRUE sau omis - case-sensitive; FALSE - case-insensitive.
Sfat. Dacă sunteți un utilizator al suitei noastre Ultimate Suite, atunci puteți face validarea datelor Regex în Excel fără a adăuga niciun cod VBA în registrele de lucru. Trebuie doar să profitați de o funcție personalizată AblebitsRegexMatch inclusă cu instrumentele noastre Regex.
2. Creați o formulă cu nume
În foaia de lucru țintă, selectați celula A1 (indiferent de conținutul acesteia și indiferent de celula pe care urmează să o validați), apăsați Ctrl + F3 pentru a deschide Managerul de nume și definiți un nume pentru această formulă:
=RegExpMatch(Sheet1!A1, "^[A-Z]{3}-\d{3}$")
Sau puteți introduce regex-ul într-o celulă (A2 în acest exemplu) și să furnizați $A$2 la al doilea argument:
=RegExpMatch(Sheet1!A1, Sheet1!$A$2)
Pentru ca formula să funcționeze corect, asigurați-vă că utilizați o referință relativă pentru text argument (A1) și referință absolută pentru model ($A$2).
Având în vedere că formula noastră este destinată validării numerelor SKU, o denumim în consecință: Validare_SKU .
Notă importantă! Atunci când definiți formula, verificați de două ori că primul argument se referă la celula selectată în mod curent , altfel formula nu va funcționa. De exemplu, dacă celula A1 este selectată pe foaie, puneți A1 în primul argument (conform recomandărilor noastre); dacă B2 este selectată, atunci folosiți B2 pentru primul argument, și așa mai departe. Nu contează cu adevărat ce referință anume folosiți, atâta timp cât se potrivește cu celula selectată în acel moment.
Pentru instrucțiuni pas cu pas, consultați Cum se face o formulă cu nume în Excel.
3. Configurați validarea datelor
Selectați prima celulă care urmează să fie verificată (A5 în cazul nostru) și creați o regulă de validare a datelor personalizată pe baza formulei numite. Pentru aceasta, procedați după cum urmează:
- Faceți clic pe Date tab> Validarea datelor .
- În Permiteți lista derulantă, selectați Personalizat .
- Introduceți formula de mai jos în caseta corespunzătoare.
=Validate_SKU
- Deselectați Ignoră spațiul gol în caz contrar, altfel regula dvs. nu va funcționa.
Opțional, puteți introduce un mesaj de eroare personalizat care să fie afișat atunci când într-o celulă sunt introduse date invalide.
Dacă simțiți că aveți nevoie de pași detaliați, iată: Cum se configurează validarea personalizată a datelor în Excel.
4. Copiați validarea datelor în mai multe celule
Pentru a copia setările de validare în mai multe celule, trebuie să faceți următoarele:
- Selectați celula cu validarea datelor și apăsați Ctrl + C pentru a o copia.
- Selectați alte celule pe care doriți să le validați, faceți clic dreapta pe ele, faceți clic pe Lipire specială , și alegeți opțiunea Validare opțiune.
- Faceți clic pe OK .
Mai multe informații pot fi găsite în Cum se copiază validarea datelor.
Acum, de fiecare dată când cineva încearcă să introducă un SKU invalid în oricare dintre celulele validate, va apărea următorul mesaj de avertizare:
Validarea e-mailurilor cu Regex
Pentru a efectua validarea mesajelor de e-mail, începeți prin a scrie o expresie regulată care se potrivește cu o adresă de e-mail.
Model : ^[\w\.\-]+@[A-Za-z0-9]+[A-Za-z0-9\.\-]*[A-Za-z0-9]+\.[A-Za-z]{2,24}$
Pentru o explicație detaliată a sintaxei, consultați Regex to match valid email addresses.
Și acum, specificați criteriile de validare prin efectuarea pașilor deja cunoscuți:
- Introduceți regex-ul de mai sus în B2.
- Selectați celula A1 și definiți un nume numit Validare_Email care se referă la:
=RegExpMatch(Sheet1!A1, Sheet1!$B$2)
- Pentru celula B5, aplicați validarea personalizată a datelor utilizând formula de mai jos. Este esențial ca Ignoră spațiul gol ar trebui să fie deselectată.
=Validate_Email
În plus, puteți configura un mesaj de eroare personalizat care să solicite utilizatorului să introducă o adresă de e-mail validă.
- Copiați regula în celulele de mai jos.
Dacă o adresă de e-mail pe care o introduceți într-o celulă validată nu se potrivește cu un model regex, va apărea următoarea alertă:
Validarea parolelor folosind expresii regulate
Atunci când folosiți regex pentru validarea parolei, primul lucru care trebuie decis este ce anume ar trebui să verifice expresia regulată. Iată câteva exemple care vă pot pune pe drumul cel bun.
O parolă trebuie să aibă cel puțin 6 caractere și poate conține numai litere (majuscule sau minuscule) și cifre:
Model : ^[A-Za-z0-9]{6,}$
O parolă trebuie să aibă minimum 6 caractere și să includă cel puțin o literă și o cifră:
Model : ^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{6,}$
O parolă trebuie să aibă cel puțin 6 caractere și să includă cel puțin o literă majusculă, o literă minusculă și o cifră:
Model : ^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)[A-Za-z\d]{6,}$
O parolă trebuie să aibă cel puțin 6 caractere și să includă cel puțin o literă, o cifră și un caracter special:
Model : ^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&_-])[A-Za-z\d@$!%*#?&_-]{6,}$
După ce ați stabilit modelul, puteți trece la configurarea validării datelor:
- Introduceți regexul parolei în C2.
- Selectați celula A1 și creați o formulă cu nume numită Validare_Password :
=RegExpMatch(Sheet1!A1, Sheet1!$C$2)
- Pentru celula C5, creați o regulă de validare personalizată cu formula de mai jos. Nu uitați să deselectați Ignoră spațiul gol caseta de selectare.
=Validate_Password
- Copiați regula în atâtea celule câte celule doriți.
Acum, puteți adăuga în siguranță noi parole în listă. Dacă un șir de intrare nu se potrivește cu regex-ul, următoarea alertă vă va reaminti ce tipuri de valori sunt acceptate:
Validarea datelor Regex nu funcționează
Dacă validarea datelor Regex nu funcționează în Excel, cel mai probabil este din cauza unuia dintre următoarele motive.
Funcția RegExpMatch lipsește
Înainte de a aplica validarea datelor, asigurați-vă că ați inserat codul funcției RegExpMatch în registrul de lucru.
Expresie regulată incorectă
Pentru a vă asigura că regex-ul dvs. funcționează conform așteptărilor, puteți introduce o formulă RegExpMatch într-o celulă și examina rezultatele. Pentru mai multe informații, consultați Excel Regular expression matching with examples.
Pentru a analiza și depanarea expresiilor regulate, puteți utiliza servicii gratuite de testare online a expresiilor regulate, cum ar fi RegEx101 sau RegExr.
Formulă cu nume greșit
Un motiv foarte frecvent al eșecului validării datelor este o formulă numită Regex care se referă la o celulă greșită. În toate exemplele, am recomandat să se definească o formulă care se referă la A1:
=RegExpMatch(A1, regex)
Acest lucru funcționează numai dacă celula A1 este activ atunci când se definește un nume și un referință relativă (fără semnul $).
Ideea este că o referință relativă specificată în formulă (A1) se va schimba automat în funcție de poziția relativă a celulei validate. Cu alte cuvinte, celula A1 este aleasă doar pentru comoditate și consecvență. De fapt, puteți selecta celula B1 și să vă referiți la B1, puteți selecta celula C1 și să vă referiți la C1, și așa mai departe. Lucrul esențial este că celula celula de referință ar trebui să fie celulă activă .
Pentru a verifica dacă formula numită este corectă, selectați orice celulă din foaia de lucru, deschideți Managerul de nume și vedeți la ce celulă indică formula. Dacă se referă la celula selectată în prezent, formula este corectă. În caz contrar, trebuie să modificați referința din primul argument.
În captura de ecran de mai jos, este selectată celula A7, ceea ce înseamnă că o formulă cu nume ar trebui să aibă A7 în primul argument. Al doilea argument ($A$2) se referă la regex - această referință trebuie să rămână constantă, așa că este blocată cu semnul $.
Ignoră opțiunea Ignoră spațiul gol selectată
La configurarea unei reguli personalizate de validare a datelor, este important să deselectați opțiunea Ignoră spațiul gol În caz contrar, regula nu va funcționa din următorul motiv:
Dacă nu se găsește o potrivire, funcția RegExpMatch returnează FALSE. Cu funcția Ignoră spațiul gol opțiunea selectată, FALSE echivalează cu blank și este ignorată.
O soluție alternativă este să se precizeze în mod explicit că formula trebuie să returneze TRUE:
=RegExpMatch(...)=TRUE
Acesta este modul de validare a datelor în Excel folosind expresii regulate. Vă mulțumesc pentru lectură și vă aștept pe blogul nostru săptămâna viitoare!
Caietul de practică pentru descărcare
Exemple de validare a datelor Regex (fișier .xlsm)