Kako uporabljati regularne izraze (Regex) v programu Microsoft Excel v celicah in zankah
Kako lahko v Excelu uporabljam regularne izraze in izkoristim zmogljivo mrežno nastavitev za manipulacijo s podatki?
- Funkcija v celici za vračanje ujemajočega se vzorca ali zamenjane vrednosti v nizu.
- Podsklop za kroženje po stolpcu podatkov in izločanje ujemanj v sosednjih celicah.
- Kakšna nastavitev je potrebna?
- Kateri so posebni znaki programa Excel za regularne izraze?
Razumem, da Regex ni idealen za številne situacije (Uporabiti ali ne uporabiti regularne izraze?), saj lahko Excel za podobne manipulacije uporablja ukaze tipa Left
, Mid
, Right
, Instr
.
548
3
Regularni izrazi se uporabljajo za ujemanje vzorcev.
Za uporabo v Excelu sledite naslednjim korakom :
Korak 1: Microsoft VBScript Regular Expressions 5.5"Dodajte referenco VBA na "Microsoft VBScript Regular Expressions 5.5"
Korak 2: Opredelite svoj vzorec
Osnovne opredelitve:
-
Obseg.a-z
ustreza malim črkam od a do z0-5
ustreza vsem številkam od 0 do 5[]
Ujemanje natančno enega od predmetov znotraj teh oklepajev.[a]
ustreza črki a[abc]
ustreza eni sami črki, ki je lahko a, b ali c[a-z]
se ujema s katero koli posamezno malo črko abecede.()
Združuje različna ujemanja za namene vračanja. Glej spodnje primere.{}
Multiplikator za ponavljajoče se kopije vzorca, opredeljenega pred njim.[a]{2}
ustreza dvema zaporednima malima črkama a:aa
[a]{1,3}
se ujema z najmanj eno in največ tremi malimi črkamia
,aa
,aaa
+
ujema vsaj enega ali več vzorcev, ki so opredeljeni pred njim.a+
se ujema z zaporednimi a'ia
,aa
,aaa
in tako naprej?
Ujemanje nič ali enega vzorca, opredeljenega pred njim.[a-z]?
se ujema s praznim nizom ali katero koli posamezno malo črko.*
Ujemanje nič ali več vzorcev, opredeljenih pred njim.[a-z]*
ustreza praznemu nizu ali nizu malih črk..
Pripade kateremu koli znaku razen novi vrstici\n
a.
ustreza nizu dveh znakov, ki se začne z a in konča s čimer koli razen\n
|
OR operatora|b
pomeni, da se lahko ujema bodisia
bodisib
.rdeča|bela|oranžna
ustreza natanko eni od barv.Operator
^
NOT[^0-9]
ne more vsebovati števila[^aA]
ne more biti mala črkaa
ali velika črkaA
``` Izbeži posebni znak, ki sledi (nadomešča zgornje obnašanje)
\.
,\\
,\(
,\?
,\$
,\^
Vzorci sidranja:
^
Ujemanje mora biti na začetku niza^a
Prvi znak mora biti mala črkaa
^[0-9]
Prvi znak mora biti številka.$
Ujemanje mora biti na koncu nizaa$
Zadnji znak mora biti mala črkaa
Prednostna tabela:
Predvidene okrajšave znakov:
Primer 1: Zaženi kot makro
Naslednji makro primer pregleda vrednost v celici
A1
in ugotovi, ali sta prva 1 ali 2 znaka številki. Če so, jih odstrani in prikaže preostanek niza. Če ne, se prikaže okence, ki sporoča, da ni bilo najdeno nobeno ujemanje. Vrednosti celicA1
12abc
bodo vrnileabc
, vrednost1abc
bo vrnilaabc
, vrednostabc123
bo vrnila "Ni ujeto", ker števke niso bile na začetku niza.Primer 2: Zaženi kot funkcija v celici
Ta primer je enak kot primer 1, vendar je nastavljen tako, da se izvaja kot funkcija v celici. Za uporabo spremenite kodo v naslednjo:
V celico
A1
postavite svoj niz ("12abc"). V celicoB1
vnesite to formulo=simpleCellRegex(A1)
in rezultat bo "abc".Primer 3: Loop Through Range
Ta primer je enak kot primer 1, le da je zanka postavljena skozi območje celic.
Primer 4: Razdelitev različnih vzorcev
Ta primer se vrti skozi območje (
A1
,A2
&A3
) in išče niz, ki se začne s tremi številkami, ki jim sledi en alfa znak in nato 4 številčne številke. Rezultat razdeli ujemanje vzorca v sosednja polja z uporabo()
.$1
predstavlja prvi vzorec, ki se ujema s prvim nizom()
.Rezultati:
Dodatni primeri vzorcev
Za uporabo regularnih izrazov neposredno v formulah programa Excel vam je lahko v pomoč naslednja UDF (uporabniško določena funkcija). Bolj ali manj neposredno izpostavlja funkcionalnost regularnih izrazov kot funkcijo Excela.
Kako deluje
Funkcija sprejme 2-3 parametre.
$0
,$1
,$2
in tako naprej.$0
je celotno ujemanje,$1
in naprej ustrezajo ustreznim skupinam ujemanj v regularnem izrazu. Privzeta vrednost je$0
.Nekaj primerov
Izvleček e-poštnega naslova:
Rezultati:
some@email.com
.Izvleček več podrejencev:
Rezultat je:
E-Mail: some@email.com, ime: Peter Gordon
Razčlenitev kombiniranega niza v eni celici na njegove sestavne dele v več celicah:
Rezultat je:
Peter Gordon
some@email.com
...Kako uporabljati
Če želite uporabiti ta UDF, naredite naslednje (približno na podlagi te Microsoftove strani. Na njej je nekaj dobrih dodatnih informacij!):
ALT+F11
, da odprete Microsoft Visual Basic for Applications Editor.Regex
in funkcijeregex
povzroči #NAME!* napake).Tukaj je moj poskus: