VBA RegEx
VBA RegEx “Regular Expression” on erittäin hyödyllinen ohjelmointimaailmassa, jota voidaan käyttää verkkosivutulon validointiin, sanamallien etsimiseen isoissa merkkijonoissa / tekstissä, merkkijonohakuun ja korvaamiseen.
Suurin osa meistä käyttää FIND, SUBSTITUTE, LEFT, OIKEA ja MID-toimintoja merkkijonon manipulointiin Microsoft Excelissä, eikö niin? Näillä toiminnoilla on kuitenkin omat rajoituksensa, joita ei voida käyttää laajasti. VBA-säännöllisten lausekkeiden tuntemus säästää paljon aikaa päivittäisessä elämässäsi. Säännölliset lausekkeet muodostetaan lyhyinä nimellä “RegEx” (tai Regex) VBA: ssa. Tässä opetusohjelmassa tarkastellaan joitain RegEx-laitteita niiden käytöstä.
Voit käyttää VBA RegEx -objektia, joka on jo luotu Microsoft VBScript Regular Expressions -kirjastossa. Voit navigoida tässä kirjastossa napsauttamalla Työkalut - Viite - Microsoft VBScript -säännölliset lausekkeet.
Voit myös luoda RegEx-objektin käyttämällä VBA: n CreateObject- toimintoa. Se vaikuttaa helpommalta tavalta, koska sinun ei tarvitse aina viitata VBScript Regular Expressions -kirjastoon.
Katso alla oleva koodi:
Himmennä regeksi objektijoukkona regex = CreateObject ("VBScript.RegExp")
Tämän koodin avulla voit luoda ja käyttää RegEx-objekteja makroosi. Pidän henkilökohtaisesti parempana tätä tapaa kuin ensimmäinen sen jäykkyyden vuoksi.
RegEx-toiminnon avulla voidaan manipuloida seuraavia pitkällä merkkijonolla.
- Villikortit kuten *, ? jne.
- Ryhmitetyt lausekkeet ja villikortit.
RegExillä on alla parametrit / ominaisuudet:
- Kuvio - RegEx: ssä määritelty kuvio, johon haluat tehdä toimintoja.
- IgnoreCase - Ohita kirjainten kirjaimet (kirjaimet / muut kirjaimet ovat samat merkkijonossa).
- Globaali - Antaa löytää kaikki mahdolliset ottelut, jos asetettu arvoon TOSI. Jos asetetaan FALSE, se löytää vain ensimmäisen ottelun.
- MultiLine - Sallii kuvion sovittamisen merkkijonoon, joka on levinnyt usealle riville.
RegEx helpottaa seuraavia kolmea toimintoa:
- Test - Testaa, onko mainittu kuvio merkkijonossa vai ei. Jos läsnä palauttaa TOSI, muuten VÄÄRÄ.
- Korvaa - Korvaa alkuperäisen kuvion toisella.
- Suorita - Palauttaa kaikki etsityt vastaavat mallit.
Kuinka käyttää Excel VBA RegEx -sovellusta?
Opimme käyttämään Excel VBA: n säännöllistä lauseketta muutamalla esimerkillä.
Voit ladata tämän VBA RegEx Excel -mallin täältä - VBA RegEx Excel TemplateExcel VBA RegEx - esimerkki # 1
Täällä voit tarkistaa, onko mainittu malli tekstissä, RegEx.Testin avulla.
Noudata alla olevia vaiheita käyttääksesi VBA RegEx -sovellusta.
Vaihe 1: Määritä uusi aliproseduuri makron luomiseksi.
Koodi:
Sub RegEx_Ex1 () End Sub
Vaihe 2: Määritä kaksi muuttujaa RegEx objektina, jota voidaan käyttää RegEx-objektin luomiseen ja Str merkkijonona.
Koodi:
Sub RegEx_Ex1 () himmentää RegEx objektina, Str merkkijonona loppuosa
Vaihe 3: Luo RegEx-objekti käyttämällä CreateObject-toimintoa.
Koodi:
Sub RegEx_Ex1 () himmentää RegEx objektina, Str merkkijonona RegEx = CreateObject ("VBScript.RegExp") End Sub
Vaihe 4: Lisää testattava kuvio RegEx-toiminnolla.
Koodi:
Sub RegEx_Ex1 () himmentää RegEx objektina, Str merkkijonona RegEx = CreateObject ("VBScript.RegExp") RegEx .Pattern = "(0-9) +" End with End Sub
Vaihe 5: Määritä merkkijono, jonka sisällä meidän on tarkistettava annettu malli.
Koodi:
Sub RegEx_Ex1 () himmentää RegEx objektina, Str as merkkijono asettaa RegEx = CreateObject ("VBScript.RegExp") RegEx .Pattern = "(0-9) +" End with Str = "Pyöräni numeroni on MH-12 PP- 6145 "Loppuosa
Vaihe 6: Käytä RegEx.Test -sovellusta testataksesi, onko annettu kuvio Str. Käytä myös Debug.Print-tulostinta tulostamaan tulos (oikea tai väärä) välittömään ikkunaan.
Koodi:
Sub RegEx_Ex1 () himmentää RegEx objektina, Str as merkkijono asettaa RegEx = CreateObject ("VBScript.RegExp") RegEx .Pattern = "(0-9) +" End with Str = "Pyöräni numeroni on MH-12 PP- 6145 "Debug.Print RegEx.Test (Str) End Sub
Vaihe 7: Paina F5 tai Suorita-painiketta suorittaaksesi koodi ja nähdäksesi tulosteen. (Avaa välitön ikkuna painamalla CTRL + G)
Täällä olemme luoneet RegEx-objektin. Sitten, VBA RegEx: llä, olemme tarkistaneet, esiintyykö annettua mallia (“(0-9) +”), joka sisältää kaikki numerot / numeroyhdistelmää välillä 0 - 9, RegEx.Testin avulla määritettyyn merkkijonoon ( str). Lähtö “True” välittömässä ikkunassa osoittaa, että kuvio “(0-9) +” on tietyssä merkkijonossa.
Excel VBA RegEx - esimerkki 2
Täällä näet, kuinka voit korvata yhden merkkijonon toisella käyttämällä RegEx.Replace.
Noudata alla olevia vaiheita käyttääksesi VBA RegEx -sovellusta.
Vaihe 1: Määritä uusi alijono makron luomiseksi.
Koodi:
Ala RegEx_Ex2 () Loppu alaosa
Vaihe 2: Määrittele kaksi muuttujaa RegEx objektiksi, joka voi pitää RegEx-objektin arvoa, ja Str, joka pitää yllä määrittämäsi merkkijonon arvon, kuten ensimmäisessä esimerkissä.
Koodi:
Sub RegEx_Ex2 () himmentää RegEx objektina, Str merkkijonona loppu Sub
Vaihe 3: Määritä RegEx-objekti ja aseta se RegEx-muuttujaksi CreateObject-toiminnolla.
Koodi:
Sub RegEx_Ex2 () himmentää RegEx objektina, Str merkkijonona RegEx = CreateObject ("VBScript.RegExp") End Sub
Vaihe 4: Lisää kuvio, jonka haluat korvata .Pattern-toiminnolla.
Koodi:
Sub RegEx_Ex2 () himmentää RegEx objektina, Str merkkijonona RegEx = CreateObject ("VBScript.RegExp") RegEx .Pattern = "123" End with End Sub
Vaihe 5: Käytä .GLOBAL = TRUE, joka jos TRUE sallii korvata tietyn merkkijonon kaikki vastaavat mallit. Jos FALSE korvaa vain ensimmäisen sovituskuvion.
Koodi:
Sub RegEx_Ex2 () himmentää RegEx objektina, Str merkkijonona RegEx = CreateObject ("VBScript.RegExp") RegEx .Pattern = "123" .Global = True 'Jos FALSE, korvaa vain ensimmäisen vastaavan merkkijonon' End With End Sub
Vaihe 6: Määritä merkkijono, jonka haluat sovittaa, ja korvata kuvio.
Koodi:
Sub RegEx_Ex2 () himmentää RegEx objektina, Str merkkijonona RegEx = CreateObject ("VBScript.RegExp") RegEx .Pattern = "123" .Global = True 'Jos FALSE, korvaa vain ensimmäisen vastaavan merkkijonon' End With Str = "123-654-000-APY-123-XYZ-888" loppuosa
Vaihe 6: Korvaa annetun merkkijonon kuvion arvo toisella tekstillä RegEx.Replace-painikkeella.
Koodi:
Sub RegEx_Ex2 () himmentää RegEx objektina, Str merkkijonona RegEx = CreateObject ("VBScript.RegExp") RegEx .Pattern = "123" .Global = True 'Jos FALSE, korvaa vain ensimmäisen vastaavan merkkijonon' End With Str = "123-654-000-APY-123-XYZ-888" Debug.Print RegEx.Replace (Str, "Replaced") End Sub
Tässä halusimme, että kuvio “123” korvataan jollakin muulla narulla. RegEx.Replace sallii kuvion arvon korvaamisen merkkijonolla (olemme määritellyt ”Korvattu”). Katso myös .Global = TRUE. Mikä on ehdollinen lausunto. Jos globaali = Tosi, Korvaa-toiminto korvaa kaikki vastaavat kuviot toisella merkkijonolla. Jos GLOBAL = FALSE, Korvaa-toiminto korvaa vain ensimmäisen sovituskuvion ja loput muut jätetään huomiotta.
Vaihe 7: Paina Suorita-painiketta tai F5-näppäintä suorittaaksesi tämän koodin ja nähdä tulosteet välittömässä tulostuksessa -ikkunassa.
Excel VBA RegEx - esimerkki 3
Täällä näet, kuinka löydät kaikki vastaavat mallit merkkijonosta käyttämällä RegEx.Execute.
Noudata alla olevia vaiheita käyttääksesi Excel VBA RegEx -sovellusta.
Vaihe 1: Määritä uusi alimenettely makron lisäämiseksi.
Koodi:
Sub RegEx_Ex3 () End Sub
Vaihe 2: Määritä säännöllinen lauseke ja muuttuja, joka voi pitää merkkijonoarvon, noudattamalla vaiheita, jotka ovat samat kuin kahdessa edellisessä esimerkissä.
Koodi:
Sub RegEx_Ex3 () himmentää RegEx objektina, Str merkkijonona RegEx = CreateObject ("VBScript.RegExp") End Sub
Vaihe 3: Lisää kuvio, jonka halusit suorittaa ja sovittaa annettuun merkkijonoon.
Koodi:
Sub RegEx_Ex3 () himmentää RegEx objektina, Str merkkijonona RegEx = CreateObject ("VBScript.RegExp") RegEx .Pattern = "123-XYZ" End with End Sub
Vaihe 4: Käytä .GLOBAL = TRUE niin, että kaikki ottelut kaappaavat annetussa merkkijonossa.
Koodi:
Sub RegEx_Ex3 () himmentää RegEx objektina, Str merkkijonona RegEx = CreateObject ("VBScript.RegExp") RegEx .Pattern = "123-XYZ" .Global = True End with End Sub
Vaihe 5: Määritä merkkijono loppuun sen jälkeen, jonka alla sinun on käytettävä Suorita ja etsi kaikki vastaavat mallit.
Koodi:
Sub RegEx_Ex3 () himmentää RegEx objektina, Str merkkijonona RegEx = CreateObject ("VBScript.RegExp") kanssa RegEx .Pattern = "123-XYZ" .Global = True End With Str = "123-XYZ-326-ABC- 983-670-PQR-123-XYZ "loppuosa
Vaihe 6: Käytä Execute muuttujan nimeltä merkkijono, jotta saat selville kaikki tiettyyn malliin liittyvät vastaavuudet.
Koodi:
Sub RegEx_Ex3 () himmentää RegEx objektina, Str as merkkijono asettaa RegEx = CreateObject ("VBScript.RegExp") kanssa RegEx .Pattern = "123-XYZ" .Global = True End With Str = "123-XYZ-326-ABC- 983-670-PQR-123-XYZ "Aseta ottelut = RegEx.Execute (Str) End Sub
Vaihe 7: Tulosta kaikkien sovitettujen kuvioiden arvo välittömään tulostusikkunaan Käytä silmukkaa.
Koodi:
Sub RegEx_Ex3 () himmentää RegEx objektina, Str merkkijonona RegEx = CreateObject ("VBScript.RegExp") kanssa RegEx .Pattern = "123-XYZ" .Global = True End With Str = "123-XYZ-326-ABC- 983-670-PQR-123-XYZ "Aseta ottelut = RegEx.Execute (Str) jokaiselle ottelulle otteluissa Debug.Print Match.Value Next Match End Sub
Vaihe 8: Suorita tämä koodi napsauttamalla F5 tai ajopainiketta ja katso lähtö välittömän tulostuksen ikkunan alla.
Tämä koodi tulostaa kaikki määritellyn mallin vastaavuudet.
Muistettavat asiat
- VBA-säännöllistä lauseketta voidaan käyttää vain merkkijonojen selvittämiseen. Ilmeisesti numeerisiin arvoihin emme tarvitse sellaista toimintoa. Kaikki numeeriset arvot, jotka otetaan huomioon jokaisessa kolmessa esimerkissä, on todellisuudessa määritelty merkkijonoksi.
- Excel VBA RegEx -sovellusta on tarkoitus käyttää merkkijonon käsittelyyn aina, kun siellä on suurta dataa. VBA RegEx -sovelluksen käyttämättä jättäminen heikentää ohjelman tehokkuutta.
- VBA RegEx epäonnistuu, kun on skenaarioita, joissa kuvio toistaa n kertaa tai äärettömän monta kertaa sen vuoksi.
Suositellut artikkelit
Tämä on opas VBA RegExiin. Täällä keskustelimme siitä, kuinka Excel VBA RegEx -sovellusta käytetään yhdessä joidenkin käytännön esimerkien ja ladattavan Excel-mallin kanssa. Voit myös käydä läpi muiden ehdottamiemme artikkeleidemme -
- Kuinka käyttää VBA-korvausta Excelissä?
- Lisää kommentti Excelissä
- VBA-ajastimen luominen Excelissä
- Sisällytetty IF-kaava Excelissä