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:

  1. Kuvio - RegEx: ssä määritelty kuvio, johon haluat tehdä toimintoja.
  2. IgnoreCase - Ohita kirjainten kirjaimet (kirjaimet / muut kirjaimet ovat samat merkkijonossa).
  3. Globaali - Antaa löytää kaikki mahdolliset ottelut, jos asetettu arvoon TOSI. Jos asetetaan FALSE, se löytää vain ensimmäisen ottelun.
  4. 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 Template

Excel 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 -

  1. Kuinka käyttää VBA-korvausta Excelissä?
  2. Lisää kommentti Excelissä
  3. VBA-ajastimen luominen Excelissä
  4. Sisällytetty IF-kaava Excelissä

Luokka: