Provjera valjanosti podataka programa Excel pomoću regularnih izraza (Regex)

  • Podijeli Ovo
Michael Brown

Udžbenik pokazuje kako izvršiti provjeru valjanosti podataka u programu Excel pomoću regularnih izraza uz pomoć prilagođene funkcije RegexMatch.

Kada je riječ o ograničavanju korisničkog unosa u radnim listovima programa Excel, Provjera valjanosti podataka je neizostavan. Želite dopustiti samo brojeve ili datume u određenoj ćeliji? Ili ograničiti tekstualne vrijednosti na određenu duljinu? Ili možda onemogućiti vremena izvan zadanog raspona? Nema problema, sve se to može jednostavno učiniti s unaprijed postavljenim ili prilagođenim kriterijima provjere valjanosti. Ali što ako želim dopustiti samo važeće adrese e-pošte ili nizove koji odgovaraju određenom uzorku? Jao, to nije moguće. Regex kažete? Hmm… to bi moglo upaliti!

    Kako izvršiti provjeru valjanosti podataka programa Excel s regularnim izrazom

    Nažalost, niti jedna od ugrađenih značajki programa Excel ne podržava regularne izraze, a validacija podataka nije izuzetak. Da biste mogli potvrditi unos ćelije pomoću regularnih izraza, prvo morate stvoriti prilagođenu Regex funkciju. Još jedna komplikacija je da se VBA korisnički definirane funkcije ne mogu izravno poslužiti Validaciji podataka - trebat će vam posrednik u obliku imenovane formule.

    S obzirom na gore navedeno, dopustite nam da ukratko navedemo korake koje treba poduzeti za provjeru valjanosti podataka u Excelu pomoću regularnih izraza:

    1. Stvorite prilagođenu funkciju Regex koja provjerava podudara li se ulazna vrijednost s regularnim izrazom.
    2. Definirajte naziv svoje Regex formule.
    3. Konfigurirajte pravilo provjere valjanosti podataka na temelju imenovane formule.
    4. Kopirajtepostavke provjere valjanosti na onoliko ćelija koliko želite.

    Zvuči kao plan? Pokušajmo to implementirati u praksi!

    Provjera valjanosti podataka programa Excel pomoću prilagođenih regularnih izraza

    Ovaj primjer bavi se vrlo uobičajenim slučajem - kako dopustiti samo vrijednosti određenog uzorka.

    Pretpostavimo da držite neke SKU kodove u svom radnom listu i želite biti sigurni da samo kodovi koji odgovaraju danom uzorku dolaze na popis. Pod uvjetom da se svaki SKU sastoji od 2 grupe znakova odvojenih crticom, prva grupa uključuje 3 velika slova, a druga grupa - 3 znamenke, takve vrijednosti možete identificirati pomoću donjeg regularnog izraza.

    Uzorak : ^[A-Z]{3}-\d{3}$

    Imajte na umu da su početak (^) i kraj ($) niza usidreni, tako da nema znakova osim u uzorak se može unijeti u ćeliju.

    1. Dodajte prilagođenu funkciju Regex Match

    Počnite s umetanjem RegExpMatch funkcije u svoju radnu knjigu. Kod su već napisali naši stručnjaci za Excel, tako da ga samo trebate kopirati sa stranice s gore povezanom vezom i zalijepiti u svoj VBA uređivač.

    Ovdje je sintaksa funkcije za vašu referencu:

    RegExpMatch(tekst , uzorak, [match_case])

    Gdje:

    • Tekst (obavezno) - izvorni niz (u našem kontekstu - potvrđena ćelija).
    • Uzorak (obavezno) - regularni izraz za podudaranje.
    • Match_case (neobavezno) - vrsta podudaranja. TOČNO ili izostavljeno - velika i mala slovaosjetljiv; FALSE - neosjetljivo je na velika i mala slova.

    Savjet. Ako ste korisnik našeg Ultimate Suite-a, onda možete napraviti Regex Data Validation u Excelu bez dodavanja VBA koda u svoje radne knjige. Samo iskoristite prilagođenu funkciju AblebitsRegexMatch uključenu u naše Regex alate.

    2. Stvorite imenovanu formulu

    Na svom ciljnom radnom listu odaberite ćeliju A1 (bez obzira na njezin sadržaj i bez obzira koju ćeliju zapravo želite potvrditi), pritisnite Ctrl + F3 da biste otvorili Upravitelj naziva i definirajte naziv za ovu formulu:

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

    Ili možete unijeti regularni izraz u neku ćeliju (A2 u ovom primjeru) i dati $A$2 drugom argumentu:

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

    Da bi formula radila ispravno, svakako koristite relativnu referencu za argument tekst (A1) i apsolutnu referencu za uzorak ($A$2).

    S obzirom na to da je naša formula namijenjena za provjeru valjanosti SKU brojeva, nazvat ćemo je u skladu s tim: Validate_SKU .

    Važna napomena! Kada definirate formulu, još jednom provjerite odnosi li se prvi argument na trenutno odabranu ćeliju , inače formula neće raditi. Na primjer, ako je ćelija A1 odabrana na listu, stavite A1 u prvi argument (prema našim preporukama); ako je odabran B2, onda koristite B2 za prvi argument, i tako jedan. Nije bitno koju konkretnu referencu koristite sve dok odgovara trenutno odabranoj ćeliji.

    Za korak po korakupute, pogledajte Kako napraviti imenovanu formulu u Excelu.

    3. Postavite provjeru valjanosti podataka

    Odaberite prvu ćeliju za provjeru (A5 u našem slučaju) i napravite prilagođeno pravilo za provjeru valjanosti podataka na temelju imenovane formule. U tu svrhu učinite sljedeće:

    1. Kliknite karticu Podaci > Provjera valjanosti podataka .
    2. U Dopusti padajućeg popisa odaberite Prilagođeno .
    3. U odgovarajući okvir unesite donju formulu.

      =Validate_SKU

    4. Poništite odabir opcije Zanemari prazno , inače vaše pravilo neće raditi.

    Opcionalno, možete upisati prilagođena poruka o pogrešci koja se prikazuje kada se u ćeliju unesu nevažeći podaci.

    Ako smatrate da su vam potrebni detaljni koraci, evo vam: Kako postaviti prilagođenu provjeru valjanosti podataka u Excelu.

    4. Kopiraj provjeru valjanosti podataka u više ćelija

    Za kopiranje postavki provjere valjanosti na više ćelija, ovo je ono što trebate učiniti:

    1. Odaberite ćeliju s provjerom valjanosti podataka i pritisnite Ctrl + C za kopirajte ga.
    2. Odaberite druge ćelije koje želite potvrditi, kliknite ih desnom tipkom miša, kliknite Posebno lijepljenje i odaberite opciju Provjera .
    3. Kliknite OK .

    Više informacija možete pronaći u Kako kopirati provjeru valjanosti podataka.

    Sada, svaki put kada netko pokuša unijeti nevažeći SKU u bilo koju od potvrđenih ćelija, sljedeće pojavit će se poruka upozorenja:

    Provjera valjanosti e-pošte s Regexom

    Da biste izvršili provjeru valjanosti e-pošte, pokrenitepisanjem regularnog izraza koji odgovara adresi e-pošte.

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

    Za detaljno objašnjenje sintakse, molimo pogledajte regularni izraz za podudaranje s važećim adresama e-pošte.

    A sada odredite kriterije provjere valjanosti izvođenjem već poznatih koraka:

    1. Unesite gornji regularni izraz u B2.
    2. Odaberite ćeliju A1 i definirajte naziv pod nazivom Validate_Email koji se odnosi na:

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

    3. Za ćeliju B5 primijenite prilagođenu provjeru valjanosti podataka koristeći donju formulu. Bitno je da opcija Zanemari prazno bude poništena.

      =Validate_Email

      Dodatno, možete konfigurirati prilagođenu poruku o pogrešci koja od korisnika traži da unese valjanu adresu e-pošte.

    4. Kopirajte pravilo u donje ćelije.

    Ako adresa e-pošte koju unesete u potvrđenu ćeliju ne odgovara uzorku regularnog izraza, sljedeće upozorenje će skočni prozor:

    Provjera valjanosti lozinki korištenjem regularnih izraza

    Kada koristite regex za provjeru valjanosti lozinke, prva stvar koju treba odlučiti je točno što vaš regularni izraz treba provjeravati. Evo nekoliko primjera koji bi vas mogli uputiti na pravi put.

    Zaporka mora imati najmanje 6 znakova i može sadržavati samo slova (velika ili mala) i znamenke:

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

    Lozinka mora imati najmanje 6 znakova i sadržavati najmanje jedno slovo ijedna znamenka:

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

    Lozinka mora imati najmanje 6 znakova i sadržavati najmanje jedno veliko slovo, jedno malo slovo i jednu znamenku:

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

    Zaporka mora imati najmanje 6 znakova dugačak i uključuje najmanje jedno slovo, jednu znamenku i jedan poseban znak:

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

    S uspostavljenim uzorkom, možete prijeći na postavljanje provjere valjanosti podataka:

    1. Unesite regularni izraz lozinke u C2.
    2. Odaberite ćeliju A1 i stvorite imenovanu formulu pod nazivom Validate_Password :

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

    3. Za ćeliju C5 stvorite prilagođeno pravilo provjere valjanosti s donjom formulom. Ne zaboravite poništiti odabir potvrdnog okvira Zanemari prazno .

      =Validate_Password

    4. Kopirajte pravilo u onoliko ćelija koliko želite.

    Sada možete sigurno dodati nove lozinke na popis. Ako se ulazni niz ne podudara s regularnim izrazom, sljedeće upozorenje će vas podsjetiti koje su vrste vrijednosti prihvaćene:

    Provjera valjanosti regularnih podataka ne radi

    Ako Validacija regularnih podataka ne radi u vašem Excelu , najvjerojatnije je to zbog jednog od sljedećih razloga.

    Nedostaje funkcija RegExpMatch

    Prije primjene Validacije podataka, obavezno umetnite kôd funkcije RegExpMatch u svoju radnu knjigu.

    Netočno regularnoizraz

    Kako biste bili sigurni da vaš regularni izraz radi prema očekivanjima, možete unijeti formulu RegExpMatch u neku ćeliju i pregledati rezultate. Za više informacija pogledajte Uparivanje regularnih izraza u Excelu s primjerima.

    Za analizu i otklanjanje pogrešaka u regularnim izrazima, možete koristiti besplatne online usluge testiranja regularnih izraza kao što su RegEx101 ili RegExr.

    Pogrešno imenovana formula

    Vrlo čest razlog neuspjeha provjere valjanosti podataka je formula s imenom Regex koja se odnosi na pogrešnu ćeliju. U svim primjerima preporučujemo definiranje formule koja se odnosi na A1:

    =RegExpMatch(A1, regex)

    Ovo radi samo ako je ćelija A1 aktivna prilikom definiranja naziva i koristi se relativna referenca (bez znaka $).

    Ideja je da će se relativna referenca navedena u formuli (A1) automatski promijeniti na temelju relativnog položaja potvrđene ćelije. Drugim riječima, ćelija A1 odabrana je samo zbog praktičnosti i dosljednosti. Zapravo, možete odabrati ćeliju B1 i uputiti na B1, odabrati ćeliju C1 i uputiti na C1, i tako dalje. Ključna stvar je da referencirana ćelija treba biti aktivna ćelija .

    Da biste provjerili je li vaša imenovana formula točna, odaberite bilo koju ćeliju na svom radnom listu, otvorite Upravitelj naziva i pogledajte na koju ćeliju pokazuje formula. Ako se odnosi na trenutno odabranu ćeliju, formula je ispravna. U suprotnom, trebali biste promijeniti referencu u prvom argumentu.

    Na snimci zaslonaispod je odabrana ćelija A7, što znači da bi imenovana formula trebala imati A7 u prvom argumentu. Drugi argument ($A$2) odnosi se na regularni izraz - ova bi referenca trebala ostati konstantna, pa je zaključana znakom $.

    Odabrana opcija Zanemari prazno

    Prilikom postavljanja prilagođenog pravila za provjeru valjanosti podataka, važno je poništiti odabir potvrdnog okvira Zanemari prazno . U suprotnom, pravilo neće raditi zbog sljedećeg razloga:

    Ako se podudaranje ne pronađe, funkcija RegExpMatch vraća FALSE. Uz odabranu opciju Zanemari prazno , FALSE je jednako prazno i ​​zanemaruje se.

    Alternativno rješenje izričito navodi da formula treba vratiti TRUE:

    =RegExpMatch(…)=TRUE

    Ovako se radi provjera valjanosti podataka u Excelu pomoću regularnih izraza. Zahvaljujem vam na čitanju i radujem se što ćemo vas vidjeti na našem blogu sljedeći tjedan!

    Radna knjiga za vježbe za preuzimanje

    Primjeri provjere valjanosti podataka Regex (.xlsm datoteka)

    Michael Brown predani je tehnološki entuzijast sa strašću za pojednostavljivanjem složenih procesa pomoću softverskih alata. S više od desetljeća iskustva u tehnološkoj industriji, usavršio je svoje vještine u Microsoft Excelu i Outlooku, kao i Google tablicama i dokumentima. Michaelov blog posvećen je dijeljenju znanja i stručnosti s drugima, pružajući savjete i upute koje je lako slijediti za poboljšanje produktivnosti i učinkovitosti. Bez obzira jeste li iskusni profesionalac ili početnik, Michaelov blog nudi vrijedne uvide i praktične savjete za izvlačenje maksimuma iz ovih osnovnih softverskih alata.