Abychom mohli regulární výrazy v Excelu používat, nejdříve je nutné připojit knihovnu. To provedete následujícím způsobem.
- Otevřete VBA editor (Alt+F11) nebo na kartě Vývojář klikněte na ikonu Visual Basic.
- Ve VBA editoru přejděte v menu do Tools - Preferences.
- Vyhledejte a zaškrtněte Microsoft VBScript Regular Expressions 5.5
- Potvrďte klávesou OK.
Teď k vlastnímu příkladu. Použiji vzorová data z účetnictví ve třech sloupcích. V prvním sloupci jsou čísla účtů. V druhém jsou počáteční stavy a ve třetím jsou koncové stavy. Pro vytvoření kontrolních sestav (cashflow) bývají v účetních programech použity následující definice P21 + P22 + P25 - P252 - K321
. Písmeno P
zde představuje data ve sloupci počáteční stavy a písmeno K
ve sloupci koncové stavy. Takže definice říká, sečti všechna data v počátečních stavech všech účtů začínajících 21 a k tomu přičti data počátečních stavů účtů začínajících 22 atd. Takových definic použiji v příkladu několik a vždy se liší. Definice samozřejmě lze editovat a tím měnit výsledný výpočet. Úkolem bude pomocí VBA a v něm použitého regulárního výrazu výpočet zprovoznit.
Na Internetu je mnoho informací o regulárních výrazech. Uvádím odkaz na dokumentaci od Microsoftu Regular Expression Language - Quick Reference, kde lze následně stáhnout v PDF. Zajímavý článek je na stránce stackoverflow.com. Pomocí regulárního výrazu ve VBA budu potřebovat najít všechny texty, kde je uveden znak představující sloupec s výpočtem (P nebo K) a za ním následující sekvenci čísel, které představují první čísla účtu. Následně pak v makru pomocí textové funkce dále zpracuji. Regulární výraz, který texty vyhledá, bude vypadat takto: (P|K)(\d+)
. Jak to funguje:
(P|K)
- najde subřetězec odpovídající P nebo K.(\d+)
- najde všechny subřetězce odpovídající číslici 1 a víckrát,
Kontrola regulárního výrazu na on-line testeru. Funguje jak má, najde všechny požadované řetězce.
Následně jsem připravil kód na test regulárního výrazu textu v buňce I4
, kde je uvedeno P21 + P22 + P25 + P26 + P29 - P252 - P255 - P257
.
Výpis testovací funkce. Všechny potřebné řetězce a subřetězce jsou nalezeny, takže tento základní kód lze aplikovat do výpočtu, který je zmíněn výše. Kompletní VBA řešení je v přiloženém souboru.
Uvedený příklad a další příklady si můžete stáhnout zde: Nejste přihlášen(a).
Komentáře
Nebyly přidány žádné komentáře.