Sisukord
Õpetus näitab, kuidas teha andmete valideerimist Excelis, kasutades regulaarseid väljendeid kohandatud RegexMatch-funktsiooni abil.
Kui tegemist on kasutaja sisendi piiramisega Exceli töölehtedel, on andmete valideerimine hädavajalik. Kas soovite lubada ainult numbreid või kuupäevi antud lahtrisse? Või piirata tekstiväärtusi teatud pikkusega? Või ehk keelata ajad väljaspool antud vahemikku? Pole probleemi, seda kõike saab hõlpsasti teha eelseadistatud või kohandatud valideerimiskriteeriumidega. Aga kui ma tahan lubada ainult kehtivaid e-posti aadresse või stringid, mis vastavad üheleKonkreetne muster? Kahjuks ei ole see võimalik. Regex ütlete? Hmm... see võib toimida!
Kuidas teha Exceli andmete valideerimist Regexiga
Kahjuks ei toeta ükski sisseehitatud Exceli funktsioonidest regexe, ja Data Validation ei ole erand. Selleks, et saaksite lahtri sisendit regulaaravaldiste abil valideerida, peate kõigepealt looma kohandatud Regex-funktsiooni. Teine komplikatsioon on see, et VBA kasutaja määratud funktsioone ei saa otse Data Validationile pakkuda - teil on vaja vahendajat nimega valemi kujul.
Võttes arvesse ülaltoodut, kirjeldame lühidalt, milliseid samme tuleb teha andmete valideerimiseks Excelis regexide abil:
- Loo kohandatud Regex-funktsioon, mis kontrollib, kas sisendväärtus vastab regulaaravaldisele.
- Määrake oma Regexi valemile nimi.
- Konfigureerige nimetatud valemil põhinev andmete valideerimise reegel.
- Kopeerige valideerimissätted nii paljudesse lahtritesse, kui soovite.
Kõlab nagu plaan? Proovime seda praktikas ellu viia!
Exceli andmete valideerimine kohandatud regulaaravaldiste abil
See näide käsitleb väga levinud juhtumit - kuidas lubada ainult konkreetse mustri väärtusi.
Oletame, et hoiad oma töölehel SKU-koode ja tahad olla kindel, et nimekirja satuvad ainult need koodid, mis vastavad antud mustrile. Eeldusel, et iga SKU koosneb kahest sidekriipsuga eraldatud tähemärgirühmast, millest esimene rühm sisaldab 3 suurtähte ja teine rühm 3 numbrit, saad sellised väärtused tuvastada allpool esitatud regexi abil.
Muster : ^[A-Z]{3}-\d{3}$
Pange tähele, et stringi algus (^) ja lõpp ($) on ankurdatud, nii et lahtrisse ei saa sisestada ühtegi muud märki kui muster.
1. Lisa kohandatud Regex Match funktsioon
Alustage RegExpMatch-funktsiooni sisestamisega oma töövihikusse. Kood on meie Exceli gurude poolt juba kirjutatud, nii et peate selle lihtsalt kopeerima ülalpool lingitud lehelt ja kleepima oma VBA redaktorisse.
Siin on funktsiooni süntaks teie jaoks:
RegExpMatch(text, pattern, [match_case])Kus:
- Tekst (nõutav) - lähtekriips (meie kontekstis - valideeritud lahter).
- Muster (nõutav) - vastav regulaaravaldis.
- Match_case (valikuline) - vaste tüüp. TRUE või välja jäetud - suur- ja väiketähelepanu; FALSE - suur- ja väiketähelepanu puudumine.
Vihje. Kui olete meie Ultimate Suite'i kasutaja, siis saate teha Regex andmete valideerimist Excelis ilma VBA koodi lisamata oma töövihikutesse. Kasutage lihtsalt meie Regex Tools'ile lisatud kohandatud AblebitsRegexMatch funktsiooni.
2. Looge nimeline valem
Valige oma sihttöölehel lahter A1 (olenemata selle sisust ja sellest, millist lahtrit te tegelikult valideerida kavatsete), vajutage Ctrl + F3, et avada nimehaldur, ja määrake sellele valemile nimi:
=RegExpMatch(Sheet1!A1, "^[A-Z]{3}-\d{3}$")
Või võite sisestada regexi mõnda lahtrisse (antud näites A2) ja anda teise argumendiks $A$2:
=RegExpMatch(Sheet1!A1, Sheet1!$A$2)
Selleks, et valem töötaks õigesti, tuleb kindlasti kasutada suhtelist viidet valemile tekst argument (A1) ja absoluutne viide muster ($A$2).
Arvestades, et meie valem on mõeldud SKU-numbrite valideerimiseks, nimetame selle vastavalt: Validate_SKU .
Oluline märkus! Valemi määratlemisel kontrollige palun veel kord, et valemiga esimene argument viitab hetkel valitud lahtrile , muidu valem ei tööta. Näiteks kui lehel on valitud lahter A1, siis pane esimeseks argumendiks A1 (vastavalt meie soovitustele); kui on valitud B2, siis kasuta esimeseks argumendiks B2 jne. Tegelikult ei ole oluline, millist konkreetset viidet kasutad, kui see vastab hetkel valitud lahtrile.
Samm-sammulised juhised leiate jaotisest Kuidas teha Excelis nimelist valemit.
3. Seadistage andmete valideerimine
Valige esimene kontrollitav lahter (meie puhul A5) ja tehke nimetatud valemil põhinev kohandatud andmete valideerimise reegel. Selleks tehke järgmist:
- Klõpsake Andmed tab> Andmete valideerimine .
- In the Luba rippmenüüst, valige Kohandatud .
- Sisestage vastavasse lahtrisse alljärgnev valem.
=Validate_SKU
- Eemaldage valik Ignoreeri tühja valik, vastasel juhul teie reegel ei toimi.
Valikuliselt saate sisestada kohandatud veateate, mida kuvatakse, kui lahtrisse sisestatakse vigaseid andmeid.
Kui tunnete, et vajate üksikasjalikke samme, siis siin on: Kuidas seadistada kohandatud andmete valideerimine Excelis.
4. Andmete valideerimise kopeerimine mitmesse lahtrisse
Selleks, et kopeerida valideerimisseadistused mitmesse lahtrisse, tuleb teha järgmist:
- Valige andmete valideerimisega lahter ja vajutage selle kopeerimiseks Ctrl + C.
- Valige teised lahtrid, mida soovite valideerida, tehke neile paremklõps, klõpsake nuppu Paste Special ja valige Valideerimine võimalus.
- Klõpsake OK .
Lisateavet leiate jaotisest Kuidas kopeerida andmete valideerimist.
Iga kord, kui keegi üritab sisestada valideeritud lahtrisse kehtetu SKU, ilmub järgmine hoiatussõnum:
E-posti valideerimine Regexiga
E-posti valideerimiseks alustate regulaaravaldise kirjutamisega, mis vastab e-posti aadressile.
Muster : ^[\w\.\-]+@[A-Za-z0-9]+[A-Za-z0-9\.\-]*[A-Za-z0-9]+\.[A-Za-z]{2,24}$
Süntaksi üksikasjalik selgitus on esitatud dokumendis Regex, et sobitada kehtivaid e-posti aadresse.
Ja nüüd määrake valideerimiskriteeriumid, sooritades juba tuttavaid samme:
- Sisestage ülaltoodud regex B2-sse.
- Valige lahter A1 ja määrake nimi nimega Validate_Email mis viitab:
=RegExpMatch(Sheet1!A1, Sheet1!$B$2)
- Rakke lahtri B5 jaoks kohandatud andmete valideerimine, kasutades allpool esitatud valemit. Oluline on, et raku Ignoreeri tühja valik peaks olema välja lülitatud.
=Validate_Email
Lisaks saate konfigureerida kohandatud veateate, mis palub kasutajal sisestada kehtiv e-posti aadress.
- Kopeeri reegel allolevatesse lahtritesse.
Kui valideeritud lahtrisse sisestatud e-posti aadress ei vasta regex-mustrile, ilmub järgmine hoiatus:
Paroolide valideerimine regulaaravaldiste abil
Kui kasutate regexi paroolide valideerimiseks, tuleb kõigepealt otsustada, mida teie regulaaravaldis peaks täpselt kontrollima. Siin on mõned näited, mis võiksid teid õigele teele suunata.
Parool peab olema vähemalt 6 tähemärki pikk ja võib sisaldada ainult tähti (suur- või väiketähti) ja numbreid:
Muster : ^[A-Za-z0-9]{6,}$
Parool peab olema vähemalt 6 tähemärki pikk ning sisaldama vähemalt ühte tähte ja ühte numbrit:
Muster : ^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{6,}$
Parool peab olema vähemalt 6 tähemärki pikk ja sisaldama vähemalt ühte suurtähte, ühte väiketähte ja ühte numbrit:
Muster : ^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)[A-Za-z\d]{6,}$
Parool peab olema vähemalt 6 tähemärki pikk ja sisaldama vähemalt ühte tähte, ühte numbrit ja ühte erimärki:
Muster : ^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&_-])[A-Za-z\d@$!%*#?&_-]{6,}$
Kui muster on loodud, saate edasi liikuda andmete valideerimise seadistamise juurde:
- Sisestage oma parooli regex C2.
- Valige lahter A1 ja looge nimeline valem nimega Validate_Password :
=RegExpMatch(Sheet1!A1, Sheet1!$C$2)
- Looge lahtri C5 jaoks kohandatud valideerimisreegel alljärgneva valemiga. Ärge unifitseerige lahtrile Ignoreeri tühja märkeruut.
=Validate_Password
- Kopeerige reegel nii paljudesse lahtritesse, kui soovite.
Nüüd võite julgelt lisada loetellu uusi paroole. Kui sisestatud string ei vasta regexile, tuletab järgmine hoiatus teile meelde, milliseid väärtusi aktsepteeritakse:
Regex andmete valideerimine ei tööta
Kui Regex andmete valideerimine ei tööta teie Excelis, siis tõenäoliselt on selle põhjuseks üks järgmistest põhjustest.
RegExpMatch funktsioon puudub
Enne andmete valideerimise rakendamist sisestage kindlasti RegExpMatch-funktsiooni kood oma töövihikusse.
Vale regulaaravaldis
Et veenduda, et teie regex töötab ootuspäraselt, võite sisestada mõnda lahtrisse valemi RegExpMatch ja uurida tulemusi. Lisateavet leiate dokumendist Excel Regular expression matching with examples.
Regulaaravaldiste analüüsimiseks ja vigade kõrvaldamiseks saate kasutada tasuta veebipõhiseid regexi testimise teenuseid, näiteks RegEx101 või RegExr.
Vale nimega valem
Väga tavaline andmete valideerimise ebaõnnestumise põhjus on Regexi nimega valem, mis viitab valele lahtrisse. Kõigis näidetes soovitame defineerida valemi, mis viitab lahtrisse A1:
=RegExpMatch(A1, regex)
See toimib ainult siis, kui raku A1 on aktiivne nime määratlemisel ja suhteline viide (ilma $-märgita) kasutatakse.
Idee on selles, et valemis määratud suhteline viide (A1) muutub automaatselt vastavalt valideeritud lahtri suhtelisele positsioonile. Teisisõnu, lahter A1 on valitud lihtsalt mugavuse ja järjepidevuse huvides. Tegelikult võib valida lahtri B1 ja viidata B1-le, valida lahtri C1 ja viidata C1-le jne. Oluline on see, et raku viidatud lahter peaks olema aktiivne rakk .
Et kontrollida, kas teie nimega valem on õige, valige oma töölehel ükskõik milline lahter, avage nimehaldur ja vaadake, millisele lahtrisse valem viitab. Kui see viitab hetkel valitud lahtrisse, on valem õige. Vastasel juhul peaksite muutma esimeses argumendis olevat viidet.
Allpool toodud ekraanipildil on valitud lahter A7, mis tähendab, et nimelise valemi esimeses argumendis peaks olema A7. Teine argument ($A$2) viitab regexile - see viide peaks jääma konstantseks, seega on see lukustatud $-märgiga.
Ignore blank option valitud
Kohandatud andmete valideerimise reegli seadistamisel on oluline eemaldada valikust Ignoreeri tühja Vastasel juhul ei toimi reegel järgmisel põhjusel:
Kui kokkulangevust ei leita, tagastab funktsioon RegExpMatch FALSE. Funktsiooniga Ignoreeri tühja valik on valitud, FALSE võrdub tühi ja seda ei võeta arvesse.
Alternatiivne lahendus on selgesõnaliselt märkida, et valem peaks tagastama TRUE:
=RegExpMatch(...)=TRUE
See on, kuidas teha andmete valideerimist Excelis, kasutades regulaarseid väljendeid. Tänan teid lugemise eest ja ootan teid järgmisel nädalal meie blogis!
Praktiline töövihik allalaadimiseks
Regex andmete valideerimise näited (.xlsm fail)