Obsah
Tento návod ukazuje, jak provádět ověřování dat v aplikaci Excel pomocí regulárních výrazů s pomocí vlastní funkce RegexMatch.
Pokud jde o omezení uživatelských vstupů v pracovních listech aplikace Excel, validace dat je nepostradatelná. Chcete v dané buňce povolit pouze čísla nebo data? Nebo omezit textové hodnoty na určitou délku? Nebo třeba zakázat časy mimo daný rozsah? Žádný problém, to vše lze snadno provést pomocí přednastavených nebo vlastních validačních kritérií. Ale co když chci povolit pouze platné e-mailové adresy nebo řetězce, které odpovídají nějakémuspecifický vzor? Bohužel, to není možné. Říkáte regex? Hmm... to by mohlo fungovat!
Jak provádět ověřování dat aplikace Excel pomocí regexu
Bohužel žádná z vestavěných funkcí Excelu nepodporuje regexy a Ověřování dat není výjimkou. Abyste mohli ověřovat vstupní údaje buněk pomocí regulárních výrazů, musíte nejprve vytvořit vlastní funkci Regex. Další komplikací je, že uživatelsky definované funkce VBA nelze obsluhovat přímo v Ověřování dat - budete potřebovat prostředníka v podobě pojmenovaného vzorce.
S ohledem na výše uvedené si stručně popíšeme kroky, které je třeba provést při ověřování dat v aplikaci Excel pomocí regexů:
- Vytvoření vlastní funkce Regex, která kontroluje, zda vstupní hodnota odpovídá regulárnímu výrazu.
- Definujte název svého vzorce Regex.
- Nakonfigurujte pravidlo Ověřování dat na základě pojmenovaného vzorce.
- Zkopírujte nastavení ověření do libovolného počtu buněk.
Zní to jako plán? Zkusme ho realizovat v praxi!
Ověřování dat aplikace Excel pomocí vlastních regulárních výrazů
Tento příklad řeší velmi častý případ - jak povolit pouze hodnoty určitého vzoru.
Předpokládejme, že ve svém pracovním listu uchováváte některé kódy SKU a chcete mít jistotu, že se do seznamu dostanou pouze kódy odpovídající danému vzoru. Za předpokladu, že se každý kód SKU skládá ze 2 skupin znaků oddělených pomlčkou, přičemž první skupina obsahuje 3 velká písmena a druhá skupina 3 číslice, můžete takové hodnoty identifikovat pomocí níže uvedeného regexu.
Vzor : ^[A-Z]{3}-\d{3}$
Všimněte si, že začátek (^) a konec ($) řetězce jsou zakotveny, takže do buňky nelze zadat jiné znaky než ty, které jsou ve vzoru.
1. Přidejte vlastní funkci Regex Match
Začněte vložením funkce RegExpMatch do sešitu. Kód je již napsán našimi guru Excelu, takže jej stačí zkopírovat z výše uvedené odkazované stránky a vložit do editoru VBA.
Zde je syntaxe funkce pro vaši informaci:
RegExpMatch(text, vzor, [match_case])Kde:
- Text (povinné) - zdrojový řetězec (v našem kontextu ověřená buňka).
- Vzor (povinné) - regulární výraz, který se má porovnat.
- Match_case (nepovinné) - typ shody. TRUE nebo vynecháno - rozlišuje velká a malá písmena; FALSE - nerozlišuje velká a malá písmena.
Tip: Pokud jste uživatelem naší sady Ultimate Suite, můžete v aplikaci Excel provádět validaci dat pomocí regexů, aniž byste do sešitů přidávali kód VBA. Stačí využít vlastní funkci AblebitsRegexMatch, která je součástí našich nástrojů Regex Tools.
2. Vytvořte pojmenovaný vzorec
V cílovém pracovním listu vyberte buňku A1 (bez ohledu na její obsah a bez ohledu na to, kterou buňku budete skutečně ověřovat), stisknutím kláves Ctrl + F3 otevřete Správce názvů a definujte název tohoto vzorce:
=RegExpMatch(Sheet1!A1, "^[A-Z]{3}-\d{3}$")
Nebo můžete regex zadat do některé buňky (v tomto příkladu A2) a jako druhý argument zadat $A$2:
=RegExpMatch(List1!A1, List1!$A$2)
Aby vzorec fungoval správně, nezapomeňte použít relativní odkaz pro vzorec text argument (A1) a absolutní odkaz pro vzor ($A$2).
Vzhledem k tomu, že náš vzorec je určen k ověřování čísel SKU, pojmenujeme jej podle toho: Validate_SKU .
Důležitá poznámka! Při definování vzorce zkontrolujte, zda je v něm první argument se vztahuje k aktuálně vybrané buňce , jinak vzorec nebude fungovat. Pokud je například na listu vybrána buňka A1, vložte do prvního argumentu A1 (podle našich doporučení); pokud je vybrána buňka B2, použijte jako první argument B2 a tak dále. Je v podstatě jedno, jaký konkrétní odkaz použijete, pokud odpovídá aktuálně vybrané buňce.
Pokyny krok za krokem naleznete v části Jak vytvořit pojmenovaný vzorec v aplikaci Excel.
3. Nastavení ověřování dat
Vyberte první buňku, která má být kontrolována (v našem případě A5), a vytvořte vlastní pravidlo pro ověřování dat na základě pojmenovaného vzorce. Za tímto účelem proveďte následující kroky:
- Klikněte na Data karta> Ověřování dat .
- V Povolit v rozevíracím seznamu vyberte Vlastní .
- Do příslušného pole zadejte následující vzorec.
=Validate_SKU
- Zrušte výběr Ignorovat prázdné místo jinak pravidlo nebude fungovat.
Volitelně můžete zadat vlastní chybovou zprávu, která se zobrazí, když jsou do buňky zadána neplatná data.
Pokud máte pocit, že potřebujete podrobný postup, tady je: Jak nastavit vlastní Ověřování dat v aplikaci Excel.
4. Kopírování ověření dat do více buněk
Chcete-li zkopírovat nastavení ověřování do více buněk, musíte provést následující kroky:
- Vyberte buňku s ověřením dat a stisknutím klávesové zkratky Ctrl + C ji zkopírujte.
- Vyberte další buňky, které chcete ověřit, klikněte na ně pravým tlačítkem myši, klikněte na možnost Vložit speciální a vyberte Ověřování možnost.
- Klikněte na OK .
Další informace naleznete v části Jak kopírovat ověřování dat.
Nyní se při každém pokusu o zadání neplatné SKU do některé z ověřených buněk zobrazí následující varovná zpráva:
Ověřování e-mailů pomocí Regexu
Ověřování e-mailů začíná zápisem regulárního výrazu, který odpovídá e-mailové adrese.
Vzor : ^[\w\.\-]+@[A-Za-z0-9]+[A-Za-z0-9\.\-]*[A-Za-z0-9]+\.[A-Za-z]{2,24}$
Podrobné vysvětlení syntaxe naleznete v části Regex pro porovnávání platných e-mailových adres.
A nyní zadejte kritéria ověření provedením již známých kroků:
- Zadejte výše uvedený regex do pole B2.
- Vyberte buňku A1 a definujte název Validate_Email který se týká:
=RegExpMatch(List1!A1, List1!$B$2)
- Pro buňku B5 použijte vlastní Ověření dat pomocí níže uvedeného vzorce. Je nezbytné, aby se v buňce Ignorovat prázdné místo by neměla být zaškrtnuta.
=Validate_Email
Kromě toho můžete nakonfigurovat vlastní chybovou zprávu vyzývající uživatele k zadání platné e-mailové adresy.
- Zkopírujte pravidlo do níže uvedených buněk.
Pokud e-mailová adresa zadaná do ověřené buňky neodpovídá vzoru regex, zobrazí se následující upozornění:
Ověřování hesel pomocí regulárních výrazů
Při použití regulárních výrazů pro ověřování hesel je třeba nejprve rozhodnout, co přesně má regulární výraz kontrolovat. Zde je několik příkladů, které vás mohou nasměrovat na správnou cestu.
Heslo musí mít alespoň 6 znaků a může obsahovat pouze písmena (velká nebo malá) a číslice:
Vzor : ^[A-Za-z0-9]{6,}$
Heslo musí mít minimálně 6 znaků a obsahovat alespoň jedno písmeno a jednu číslici:
Vzor : ^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{6,}$
Heslo musí mít minimálně 6 znaků a obsahovat alespoň jedno velké písmeno, jedno malé písmeno a jednu číslici:
Vzor : ^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)[A-Za-z\d]{6,}$
Heslo musí mít minimálně 6 znaků a obsahovat alespoň jedno písmeno, jednu číslici a jeden speciální znak:
Vzor : ^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&_-])[A-Za-z\d@$!%*#?&_-]{6,}$
Po vytvoření vzoru můžete přejít k nastavení funkce Ověřování dat:
- Zadejte regex hesla do pole C2.
- Vyberte buňku A1 a vytvořte pojmenovaný vzorec s názvem Validate_Password :
=RegExpMatch(List1!A1, List1!$C$2)
- Pro buňku C5 vytvořte vlastní validační pravidlo s níže uvedeným vzorcem. Nezapomeňte zrušit výběr políčka Ignorovat prázdné místo zaškrtávacího políčka.
=Validate_Password
- Zkopírujte pravidlo do libovolného počtu buněk.
Nyní můžete do seznamu bez obav přidávat nová hesla. Pokud vstupní řetězec neodpovídá regexu, následující upozornění vám připomene, jaké druhy hodnot jsou akceptovány:
Nefungující ověřování dat regexem
Pokud vám v aplikaci Excel nefunguje ověřování dat regexem, je to pravděpodobně z jednoho z následujících důvodů.
Chybí funkce RegExpMatch
Před použitím funkce Ověřování dat nezapomeňte do sešitu vložit kód funkce RegExpMatch.
Nesprávný regulární výraz
Chcete-li se ujistit, že váš regex funguje podle očekávání, můžete do některé buňky zadat vzorec RegExpMatch a zkontrolovat výsledky. Další informace naleznete v části Porovnávání regulárních výrazů v aplikaci Excel s příklady.
K analýze a ladění regulárních výrazů můžete použít bezplatné online služby pro testování regexů, například RegEx101 nebo RegExr.
Špatně pojmenovaný vzorec
Velmi častým důvodem selhání validace dat je vzorec pojmenovaný Regex, který se vztahuje k nesprávné buňce. Ve všech příkladech jsme doporučili definovat vzorec vztahující se k buňce A1:
=RegExpMatch(A1, regex)
To funguje pouze v případě, že buňka A1 je aktivní při definování názvu a relativní reference (bez znaku $).
Jde o to, že relativní odkaz zadaný ve vzorci (A1) se automaticky změní na základě relativní pozice validované buňky. Jinými slovy, buňka A1 je vybrána jen pro pohodlí a konzistenci. Ve skutečnosti můžete vybrat buňku B1 a odkazovat na B1, vybrat buňku C1 a odkazovat na C1 atd. Klíčové je, že se odkazovaná buňka by měl být aktivní buňka .
Chcete-li zkontrolovat, zda je váš pojmenovaný vzorec správný, vyberte libovolnou buňku v pracovním listu, otevřete Správce názvů a podívejte se, na kterou buňku vzorec odkazuje. Pokud odkazuje na aktuálně vybranou buňku, je vzorec správný. V opačném případě byste měli změnit odkaz v prvním argumentu.
Na obrázku níže je vybrána buňka A7, což znamená, že pojmenovaný vzorec by měl mít v prvním argumentu A7. Druhý argument ($A$2) odkazuje na regex - tento odkaz má zůstat konstantní, proto je uzamčen znakem $.
Vybraná možnost Ignorovat prázdné místo
Při nastavování vlastního pravidla Ověřování dat je důležité zrušit výběr možnosti Ignorovat prázdné místo Jinak pravidlo nebude fungovat z následujícího důvodu:
Pokud není nalezena shoda, funkce RegExpMatch vrátí hodnotu FALSE. Ignorovat prázdné místo zvolena možnost FALSE, rovná se prázdná a je ignorována.
Alternativním řešením je explicitně uvést, že vzorec má vracet hodnotu TRUE:
=RegExpMatch(...)=TRUE
To je návod, jak provádět validaci dat v Excelu pomocí regulárních výrazů. Děkuji vám za přečtení a těším se na vás na našem blogu příští týden!
Cvičebnice ke stažení
Příklady ověřování dat regexem (.xlsm soubor)