VBA RegEx | Paano gamitin ang Regular Expression sa VBA Excel? (Mga Halimbawa)
Ano ang RegEx sa Excel VBA?
Ang RegEx ay nangangahulugang "Regular na Pagpapahayag”Sa VBA Excel at isang pagkakasunud-sunod ng mga character na tumutukoy sa pattern ng paghahanap para sa paghahanap ng isang tukoy na pattern ng mga character sa isang string ng mga halaga. Sa isang simpleng salitang "makakagawa kami ng isang regular na pattern ng pagpapahayag at magagamit ito upang maghanap para sa string ng pattern na iyon".
Ang VBA RegEx ay isang modelo ng bagay. Alam kong nakakatakot ito sa pamamagitan ng pagtingin sa paliwanag ngunit ang bagay ay ang likas na katangian ng bagay. Ang isang bagay na kailangan mong tandaan dito ay ang VBA RegEx (Regular Expression) ay isang bagay na function ng teksto tulad ng aming iba pang mga pagpapaandar ng teksto na "KALIWAN, KANAN, MID".
Paano Paganahin ang RegEx sa Excel VBA?
Tulad ng sinabi ko sa VBA RegEx ay isang modelo ng object sa VBA tulad ng aming panlabas na software tulad ng "MS Word" at "MS PowerPoint". Katulad nito, ang RegEx ay isa ring Component Object Model (COM) na kailangan nating mag-refer sa editor ng VBA. Upang paganahin ang RegEx, sundin ang mga hakbang sa ibaba.
Hakbang 1: Pumunta sa Visual Basic Editor (Alt + F11)
Hakbang 2: Pumunta sa Mga Tool at Sanggunian.
Hakbang 3: Ngayon makikita mo ang mga sanggunian sa VBA Project. Mag-scroll pababa at piliin ang "Microsoft VBScript Regular Expression 5.5"
Hakbang 4: Ngayon mag-click sa OK. Maaari naming ma-access ang RegEx object na ito ngayon sa VBA coding.
Halimbawa - Ipapakita ko sa iyo ang isang simpleng halimbawa. Ipagpalagay na mayroon kang mga salitang "Sales 2019, Sales 2018, and Sales 2017". Kung tinukoy mo ang pattern bilang [0 - 7] tumutugma ito sa lahat ng mga numero sa pagitan ng 0 hanggang 7, sa gayon ang aming mga tugma ay magiging 201, 201, at 2017 sa bawat string.
Huwaran ng VBA RegEx
Ang pattern ng pagpapaandar ng VBA RegEx ay mukhang nakakatakot at tumatagal ng ilang oras upang maunawaan ang pattern. Maaari nating makita ang dalawang uri ng isang pagkakasunud-sunod ng mga character dito ang isa ay "Mga Tauhang Literal" at ang isa pa ay "Metachar character".
- Mga Tauhang Literal maghanap para sa eksaktong tugma ng ibinigay na string. Halimbawa, ang literal na pagkakasunud-sunod ng character na "EFG" ay simpleng naghahanap para sa lahat ng mga tugma ng "EFG" sa ibinigay na teksto.
- Mga Metacharacter ay walang anuman kundi isang kombinasyon ng mga character na may eksaktong kahulugan sa pattern na RegEx. Ito ay ganap na naiiba kaysa sa Mga Tauhang Literal. Ito ay isang malaking paksang tatalakayin, sa ibaba ay ilan sa mga mahahalagang syntax.
Syntax | Paglalarawan | Halimbawa | Halimbawa ng Pagtutugma | |||
. | Tumutugma ito sa anumang solong character ng input string | p.t | Alaga Palayok, Ilagay, pattern | |||
[] | Tumutugma ito sa anumang solong character sa pagitan ng bracket ng isang input string | [pt] | Tumutugma ito sa alinman sa p o t | |||
[^] | Tumutugma ito sa anumang solong character, hindi sa pagitan ng bracket ng isang input string | [^ pt] | Tumutugma ito sa alinman sa p o t | |||
[Una huli] | Tumutugma ito sa anumang character sa pagitan ng saklaw na ibinigay sa bracket | [0-9] | Tumutugma ito sa anumang digit mula 0 hanggang 9 | |||
[a-z] | Tumutugma ito sa anumang character na mas mababang kaso mula sa a hanggang z | |||||
[A-Z] | Tumutugma ito sa anumang character na pang-itaas na kaso mula A hanggang Z | |||||
\ s | Ito ay tumutugma sa anumang puting space character | – | Tumutugma sa Puwang, Bagong Linya, o Char Charity ng Tab | |||
\ S | Tumutugma ito sa anumang character na hindi puti-space | – | Ang mga katugmang character ay hindi Space, hindi Bagong Line, o hindi Character ng Tab | |||
\ d | Tumutugma ito sa anumang solong digit na character | SE 5 VG 6 | Mga tugma sa 5 at 6 | |||
\ D | Ito ay tumutugma sa anumang solong nondigit character | SE 5 VG 6 | Tugma sa SEVG |
Mga Katangian at Paraan ng RegEx Object
Tulad ng lahat ng aming mga modelo ng object ang RegEx ay mayroon ding sariling mga katangian at pamamaraan. Ngayon ay makikita natin isa-isa nang detalyado.
Mga Katangian ng VBA Regex Object
- Pattern: Ginagamit ito upang maitugma ang ibinigay na string.
- Huwag pansinin ang Kaso: Ito ay upang huwag pansinin ang malalaki at maliliit na character.
- Pandaigdigan: Kung nais mong hanapin ang lahat ng mga tugma sa pattern pagkatapos ay TOTOO ang argumento o kung hindi man matatagpuan ang unang tugma.
- Multi-Line: Kung nais mong hanapin sa mga bagong linya ng linya maaari mo itong magamit.
Mga Paraan ng RegEx Object
- Pagsusulit: Ito ay upang subukan kung ang pattern ay matatagpuan sa ibinigay na string. Ibabalik nito ang TOTOO kung nahanap o kung hindi man ang MALI.
- Isagawa: Ibabalik nito ang lahat ng mga tugma ng pattern laban sa paghahanap ng string.
- Palitan: Papalitan nito ang string ng paghahanap ng bagong string.
Halimbawa ng RegEx sa VBA Excel
Ngayon tingnan ang nasa ibaba halimbawa ng VBA code.
Maaari mong i-download ang Template ng VBA RegEx Excel dito - VBA RegEx Excel TemplateCode:
Sub RegEx_Example () I-dim RegEx Bilang Bagay, MyString Bilang String Set RegEx = CreateObject ("VBScript.RegExp") Sa RegEx .Pattern = "[0-9] +" End With MyString = "Date of Birth year is 1985" MsgBox RegEx .Subukan (MyString) MyString = "Petsa ng Kapanganakan taon ay ???" MsgBox RegEx.Test (MyString) End Sub
maliksi
Sa code sa itaas, itinakda namin ang pattern upang maghanap sa numero mula 0 hanggang 9 tulad ng sumusunod.
Sa RegEx .Pattern = "[0-9] +" Tapusin Sa
Pagkatapos ang variable na MyString = "Petsa ng kapanganakan taon ay 1985" hawak nito ang mga halagang 0 hanggang 9, kaya't ang aming kahon ng mensahe ay magbabalik ng TUNAY.
MyString = "Petsa ng kapanganakan taon ay ???" walang anumang mga numero mula 0 hanggang 9 kaya ibabalik ang MALI bilang resulta ng mga kahon ng mensahe.