Obsah
Tento návod ukazuje, ako overovať údaje v programe Excel pomocou regulárnych výrazov pomocou vlastnej funkcie RegexMatch.
Keď ide o obmedzenie používateľských vstupov v pracovných hárkoch programu Excel, validácia údajov je nepostrádateľná. Chcete v danej bunke povoliť len čísla alebo dátumy? Alebo obmedziť textové hodnoty na určitú dĺžku? Alebo možno zakázať časy mimo daného rozsahu? Žiadny problém, to všetko sa dá ľahko vykonať pomocou prednastavených alebo vlastných validačných kritérií. Ale čo keď chcem povoliť len platné e-mailové adresy alebo reťazce, ktoré zodpovedajúšpecifický vzor? Bohužiaľ, to nie je možné. Hovoríte, že regex? Hmm... to by mohlo fungovať!
Ako vykonať overenie údajov programu Excel pomocou regexu
Bohužiaľ, žiadna zo zabudovaných funkcií programu Excel nepodporuje regexy a funkcia Overenie údajov nie je výnimkou. Aby ste mohli overovať vstupné údaje buniek pomocou regulárnych výrazov, musíte najprv vytvoriť vlastnú funkciu Regex. Ďalšou komplikáciou je, že funkcie definované používateľom vo VBA nie je možné obsluhovať priamo funkciou Overenie údajov - budete potrebovať sprostredkovateľa vo forme pomenovaného vzorca.
Vzhľadom na vyššie uvedené si stručne načrtneme kroky, ktoré treba vykonať na overenie údajov v programe Excel pomocou regexov:
- Vytvorenie vlastnej funkcie Regex, ktorá kontroluje, či vstupná hodnota zodpovedá regulárnemu výrazu.
- Definujte názov pre svoj vzorec Regex.
- Nakonfigurujte pravidlo Overovanie údajov na základe pomenovaného vzorca.
- Skopírujte nastavenia overovania do ľubovoľného počtu buniek.
Znie to ako plán? Skúsme ho realizovať v praxi!
Overovanie údajov v programe Excel pomocou vlastných regulárnych výrazov
Tento príklad sa zaoberá veľmi častým prípadom - ako povoliť len hodnoty určitého vzoru.
Predpokladajme, že vo svojom pracovnom hárku uchovávate určité kódy SKU a chcete si byť istí, že sa do zoznamu dostanú len kódy zodpovedajúce danému vzoru. Za predpokladu, že každý kód SKU pozostáva z 2 skupín znakov oddelených pomlčkou, pričom prvá skupina obsahuje 3 veľké písmená a druhá skupina 3 číslice, môžete takéto hodnoty identifikovať pomocou nižšie uvedeného regexu.
Vzor : ^[A-Z]{3}-\d{3}$
Všimnite si, že začiatok (^) a koniec ($) reťazca sú ukotvené, takže do bunky nie je možné zadať iné znaky ako tie, ktoré sú vo vzore.
1. Pridajte vlastnú funkciu Regex Match
Začnite vložením funkcie RegExpMatch do svojho zošita. Kód je už napísaný našimi guru Excelu, takže ho stačí skopírovať z vyššie uvedenej odkazovanej stránky a vložiť do editora VBA.
Tu je syntax funkcie pre vašu potrebu:
RegExpMatch(text, vzor, [match_case])Kde:
- Text (povinné) - zdrojový reťazec (v našom kontexte validovaná bunka).
- Vzor (povinné) - regulárny výraz, ktorý sa má porovnať.
- Match_case (nepovinné) - typ zhody. TRUE alebo vynechať - rozlišovanie veľkých a malých písmen; FALSE - nerozlišovanie veľkých a malých písmen.
Tip: Ak ste používateľom nášho balíka Ultimate Suite, môžete vykonávať overovanie údajov Regex v programe Excel bez pridávania kódu VBA do zošitov. Stačí využiť vlastnú funkciu AblebitsRegexMatch, ktorá je súčasťou našich nástrojov Regex Tools.
2. Vytvorte pomenovaný vzorec
V cieľovom pracovnom hárku vyberte bunku A1 (bez ohľadu na jej obsah a bez ohľadu na to, ktorú bunku budete skutočne overovať), stlačením klávesovej skratky Ctrl + F3 otvorte Správcu názvov a definujte názov tohto vzorca:
=RegExpMatch(Sheet1!A1, "^[A-Z]{3}-\d{3}$")
Alebo môžete zadať regex do niektorej bunky (v tomto príklade A2) a ako druhý argument uviesť $A$2:
=RegExpMatch(Sheet1!A1, Sheet1!$A$2)
Aby vzorec fungoval správne, nezabudnite použiť relatívny odkaz pre text argument (A1) a absolútny odkaz pre vzor ($A$2).
Vzhľadom na to, že náš vzorec je určený na overovanie čísel SKU, pomenujeme ho podľa toho: Validate_SKU .
Dôležitá poznámka! Pri definovaní vzorca skontrolujte, či prvý argument sa vzťahuje na aktuálne vybranú bunku , inak vzorec nebude fungovať. Ak je napríklad na liste vybraná bunka A1, vložte do prvého argumentu A1 (podľa našich odporúčaní); ak je vybraná bunka B2, potom použite ako prvý argument B2, a tak ďalej. Je úplne jedno, ktorý konkrétny odkaz použijete, pokiaľ sa zhoduje s aktuálne vybranou bunkou.
Pokyny krok za krokom nájdete v časti Ako vytvoriť pomenovaný vzorec v programe Excel.
3. Nastavenie overovania údajov
Vyberte prvú bunku, ktorá sa má skontrolovať (v našom prípade A5), a vytvorte vlastné pravidlo overovania údajov na základe pomenovaného vzorca. Na tento účel postupujte takto:
- Kliknite na . Údaje karta> Overovanie údajov .
- V Povoľte v rozbaľovacom zozname vyberte Vlastné .
- Do príslušného poľa zadajte nasledujúci vzorec.
=Validate_SKU
- Zrušte výber Ignorovať prázdne miesto inak vaše pravidlo nebude fungovať.
Voliteľne môžete zadať vlastnú chybovú správu, ktorá sa zobrazí, keď sa do bunky zadajú neplatné údaje.
Ak máte pocit, že potrebujete podrobný postup, tu je: Ako nastaviť vlastné Overovanie údajov v programe Excel.
4. Kopírovanie overovania údajov do viacerých buniek
Ak chcete skopírovať nastavenia overovania do viacerých buniek, musíte urobiť toto:
- Vyberte bunku s overením údajov a stlačením klávesovej skratky Ctrl + C ju skopírujte.
- Vyberte ďalšie bunky, ktoré chcete overiť, kliknite na ne pravým tlačidlom myši, kliknite na položku Vložiť špeciálne a vyberte Overovanie možnosť.
- Kliknite na . OK .
Viac informácií nájdete v časti Ako skopírovať overenie údajov.
Teraz sa pri každom pokuse o zadanie neplatného SKU do niektorej z overených buniek zobrazí nasledujúce varovanie:
Overovanie e-mailov pomocou regexu
Ak chcete vykonať overenie e-mailu, začnite napísaním regulárneho výrazu, ktorý zodpovedá e-mailovej adrese.
Vzor : ^[\w\.\-]+@[A-Za-z0-9]+[A-Za-z0-9\.\-]*[A-Za-z0-9]+\.[A-Za-z]{2,24}$
Podrobné vysvetlenie syntaxe nájdete v časti Regex na porovnávanie platných e-mailových adries.
A teraz zadajte kritériá overovania vykonaním už známych krokov:
- Zadajte vyššie uvedený regex do B2.
- Vyberte bunku A1 a definujte názov s názvom Validate_Email ktorý sa týka:
=RegExpMatch(Sheet1!A1, Sheet1!$B$2)
- Pre bunku B5 použite vlastné overenie údajov pomocou nižšie uvedeného vzorca. Je dôležité, aby Ignorovať prázdne miesto možnosť by mala byť zrušená.
=Validate_Email
Okrem toho môžete nakonfigurovať vlastnú chybovú správu, ktorá používateľa vyzve na zadanie platnej e-mailovej adresy.
- Skopírujte pravidlo do nižšie uvedených buniek.
Ak e-mailová adresa, ktorú zadáte do overovanej bunky, nezodpovedá regexovému vzoru, zobrazí sa nasledujúce upozornenie:
Overovanie hesiel pomocou regulárnych výrazov
Pri používaní regexu na overovanie hesla sa najprv musíte rozhodnúť, čo presne by mal regulárny výraz kontrolovať. Tu je niekoľko príkladov, ktoré vás môžu nasmerovať na správnu cestu.
Heslo musí mať aspoň 6 znakov a môže obsahovať len písmená (veľké alebo malé) a číslice:
Vzor : ^[A-Za-z0-9]{6,}$
Heslo musí mať minimálne 6 znakov a obsahovať aspoň jedno písmeno a jednu číslicu:
Vzor : ^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{6,}$
Heslo musí mať minimálne 6 znakov a musí obsahovať aspoň jedno veľké písmeno, jedno malé písmeno a jednu číslicu:
Vzor : ^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)[A-Za-z\d]{6,}$
Heslo musí mať minimálne 6 znakov a obsahovať aspoň jedno písmeno, jednu číslicu a jeden špeciálny znak:
Vzor : ^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&_-])[A-Za-z\d@$!%*#?&_-]{6,}$
Po vytvorení vzoru môžete prejsť k nastaveniu overovania údajov:
- Zadajte regex hesla v poli C2.
- Vyberte bunku A1 a vytvorte pomenovaný vzorec s názvom Validate_Password :
=RegExpMatch(Sheet1!A1, Sheet1!$C$2)
- Pre bunku C5 vytvorte vlastné validačné pravidlo s nasledujúcim vzorcom. Nezabudnite zrušiť výber Ignorovať prázdne miesto začiarkavacie políčko.
=Validate_Password
- Skopírujte pravidlo do ľubovoľného počtu buniek.
Teraz môžete bezpečne pridávať nové heslá do zoznamu. Ak vstupný reťazec nezodpovedá regexu, nasledujúce upozornenie vám pripomenie, aké druhy hodnôt sú akceptované:
Nefunguje overovanie údajov regexom
Ak vám v programe Excel nefunguje overovanie údajov pomocou regexu, je to pravdepodobne z jedného z nasledujúcich dôvodov.
Chýba funkcia RegExpMatch
Pred použitím funkcie Overenie údajov nezabudnite do zošita vložiť kód funkcie RegExpMatch.
Nesprávny regulárny výraz
Ak sa chcete uistiť, že váš regex funguje podľa očakávania, môžete do niektorej bunky zadať vzorec RegExpMatch a skontrolovať výsledky. Viac informácií nájdete v časti Excel - párovanie regulárnych výrazov s príkladmi.
Na analýzu a ladenie regulárnych výrazov môžete použiť bezplatné online služby na testovanie regexov, napríklad RegEx101 alebo RegExr.
Nesprávne pomenovaný vzorec
Veľmi častým dôvodom zlyhania validácie údajov je vzorec s názvom Regex, ktorý sa vzťahuje na nesprávnu bunku. Vo všetkých príkladoch sme odporúčali definovať vzorec, ktorý sa vzťahuje na A1:
=RegExpMatch(A1, regex)
Funguje to len vtedy, ak bunka A1 je aktívny pri definovaní názvu a relatívny odkaz (bez znaku $).
Ide o to, že relatívny odkaz uvedený vo vzorci (A1) sa automaticky zmení na základe relatívnej polohy overovanej bunky. Inými slovami, bunka A1 je zvolená len kvôli pohodliu a konzistentnosti. V skutočnosti môžete vybrať bunku B1 a odkazovať na B1, vybrať bunku C1 a odkazovať na C1 atď. odkazovaná bunka by mala byť aktívna bunka .
Ak chcete skontrolovať, či je váš pomenovaný vzorec správny, vyberte ľubovoľnú bunku v pracovnom hárku, otvorte Správcu názvov a pozrite sa, na ktorú bunku vzorec odkazuje. Ak odkazuje na aktuálne vybranú bunku, vzorec je správny. V opačnom prípade by ste mali zmeniť odkaz v prvom argumente.
Na snímke nižšie je vybraná bunka A7, čo znamená, že pomenovaný vzorec by mal mať v prvom argumente A7. Druhý argument ($A$2) sa vzťahuje na regex - tento odkaz má zostať konštantný, preto je uzamknutý znakom $.
Vybraná možnosť Ignorovať prázdne miesto
Pri nastavovaní vlastného pravidla Overovanie údajov je dôležité zrušiť výber Ignorovať prázdne miesto V opačnom prípade pravidlo nebude fungovať z nasledujúceho dôvodu:
Ak sa nenájde zhoda, funkcia RegExpMatch vráti hodnotu FALSE. Ignorovať prázdne miesto zvolená možnosť FALSE sa rovná prázdnej hodnote a ignoruje sa.
Alternatívnym riešením je explicitné uvedenie, že vzorec by mal vrátiť hodnotu TRUE:
=RegExpMatch(...)=TRUE
To je návod na overovanie údajov v programe Excel pomocou regulárnych výrazov. Ďakujem vám za prečítanie a teším sa na vás na našom blogu budúci týždeň!
Cvičebnica na stiahnutie
Príklady overovania údajov regexom (.xlsm súbor)