Nacházíte se: WALL.czExcel návod › Regulární výrazy v excelu
Kategorie: Excel návod

Regulární výrazy v excelu

ExcelRegulární výraz (zkracováno na regexp, regex či jen RE podle anglického regular expression) je řetězec popisující celou množinu řetězců, konkrétně regulární jazyk. Tolik Wikipedie. Nejčastější využití je vyhledávání textu nebo manipulace s textem. Pojďme se podívat na využití v Excelu.

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.

Regulární výrazy v excelu

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.

Regulární výrazy v excelu

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.

Sub RegExpTest() Dim myMatch As Match Dim myMatches As MatchCollection Dim myRegExp As RegExp Dim myReplaceRegExp As RegExp Dim SubjectString As String Dim i As Integer Set myRegExp = New RegExp myRegExp.Global = True myRegExp.Pattern = "(P|K)(\d+)" Set myReplaceRegExp = New RegExp myReplaceRegExp.Global = True SubjectString = Range("I4") Set myMatches = myRegExp.Execute(SubjectString) Debug.Print "myMatches.Count: " & myMatches.Count i = 1 For Each myMatch In myMatches Debug.Print " " & i & ". Matches.Value: " & myMatch.Value Debug.Print " SubMatches: " & myMatch.SubMatches.Count & "(" & myMatch.SubMatches(0) & ";" & myMatch.SubMatches(1) & ")" i = i + 1 Next Set myRegExp = Nothing End Sub

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.

Regulární výrazy v excelu

Uvedený příklad a další příklady si můžete stáhnout zde: Nejste přihlášen(a).

print Formát pro tisk

Sdílet článek:


Přeposlat článek e-mailem

Komu * Můžete zadat více adres oddělených středníkem
Vaše e-mailová adresa *
Vaše jméno
Kontrola
Připojit vzkaz
Položky označené * jsou povinné

Komentáře rss

Přidat komentář >

Nebyly přidány žádné komentáře.

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Aktivní diskuse

spojení tabulek

camron • 19.3. 13:26

spojení vzorců v PQ

lubo • 19.3. 10:47

Podmínka pro spuštění makra

elninoslov • 19.3. 9:19

duplicity

elninoslov • 19.3. 9:13

Podmínka pro spuštění makra

MilanKop • 18.3. 18:51

Podmínka pro spuštění makra

Stalker • 18.3. 18:34

duplicity

fortes • 18.3. 17:48