INHOUDSOPGAWE
Die implementering van VBA is die doeltreffendste, vinnigste en veiligste metode om enige bewerking in Excel uit te voer. In hierdie artikel sal ons jou wys hoe om sekere stringe in 'n ander gegewe string te vind deur VBA in Excel te gebruik.
Laai oefensjabloon af
Jy kan die gratis oefen Excel-sjabloon van hier af aflaai.
VBA om te vind in String.xlsm
InStr-funksie
Microsoft Excel het 'n ingeboude funksie genaamd die InStr-funksie om die posisie van spesifieke stringe in 'n gegewe string te vind.
Generiese sintaksis:
InStr([start], string1, string2, [compare])
Hier,
Argumente | Vereis/opsioneel | Definisie |
---|---|---|
begin | Opsioneel | Beginposisie van die soektog.
|
string1 | Vereis | Die string om in te soek, Primêre String. |
string2 | Vereis | Die string om in die primêre string te soek . |
vergelyk | Opsioneel | Die InStr -funksie is by verstek hooflettersensitief. Maar as jy 'n kas-onsensitiewe InStr wil laat loop, dan kan jy die argument hier deurvoer om 'n sekere vergelyking uit te voer. Hierdie argument kan die volgende weeswaardes,
By verstek neem InStr vbBinaryCompare as die vergelykingsargument. |
8 maklike voorbeelde om spesifieke stringposisie in gegewe snaar te vind deur VBA te gebruik
Kom ons kyk na 'n paar eenvoudige voorbeelde om die posisies van sekere stringe in 'n gegewe string te kry deur gebruik te maak van VBA .
1. VBA om posisie van teks in string te vind
Hieronder is 'n voorbeeld van InStr om te vind die posisie van 'n teks in 'n string.
- Druk Alt + F11 op jou sleutelbord of gaan na die oortjie Ontwikkelaar -> Visual Basic om Visual Basic Editor oop te maak.
- In die opspringkode-venster, vanaf die kieslysbalk , klik Voeg in -> Module .
- Skryf nou in die kodevenster 'n eenvoudige InStr -program binne 'n VBA Sub Prosedure (sien hieronder).
5565
Jou kode is nou gereed om te loop.
- Druk F5 op jou sleutelbord of van die kieslysbalk kies Run -> Begin Sub/UserForm . Jy kan ook net op die klein Speel-ikoon in die subkieslysbalk klik om die makro te laat loop.
Jy sal sien dat die pop-up boodskap boks sal vir jou 'n nommer geeverklaar die posisie van die teks wat jy wou kontroleer.
Verduideliking:
Ons primêre string, " Geluk is 'n keuse " is 'n sin van 21 letters (met spasies) en ons wou die posisie van die teks " keuse " in daardie string vind. Die teks " keuse " het vanaf die 16de posisie van die primêre string begin, daarom het ons nommer 16 as ons uitvoer in die boodskapkassie gekry.
2. VBA om teks vanaf 'n spesifieke posisie in string te vind
Kom ons vind nou uit wat sou gebeur as ons die posisie van 'n sekere nommer wou kry.
- Op dieselfde manier as maak voorheen Visual Basic Editor oop vanaf die Ontwikkelaar -oortjie en Voeg in 'n Module in die kodevenster.
- In die kodevenster, skryf 'n eenvoudige InStr -program wat hierbo gewys word en gee die waarde in die begin-argument deur volgens die posisie waaruit jy jou teks wil tel.
6606
- Volgende, Laat die kode hardloop .
Jy sal sien dat die opspringboodskapkassie sal gee jou 'n nommer wat die posisie van die teks verklaar begin van 'n sekere posisie wat jy wou kontroleer.
Verduideliking:
Soos ons reeds geweet het (uit die fase 1 bespreking) dat die teks “ keuse ” begin het vanaf die posisie van 16 , daarom het ons twee “ keuse ” in die primêre string en stel 17 as ons1ste parameter om die eerste " keuse oor te slaan". So, ons hardloop die makro hierbo en dit het vir ons posisienommer 27 gewys wat presies die posisienommer is van die tweede “ keuse ” in die gegewe string.
3. VBA om teks te vind met hoofletter-onsensitiewe InStr-funksie in String
Van die bekendstelling van die InStr -funksie weet jy reeds dat die InStr -funksie by verstek is hooflettersensitief. Kom ons vind dit uit met 'n voorbeeld.
Sien die volgende VBA -kode, waar ons die posisie van die woord “ Keuse wou vind. " met 'n hoofletter "C" in die string " Geluk is 'n keuse " waar keuse geskryf is met 'n klein "c" .
- Hardloop die kode en vind 0 as ons uitset.
Dit is omdat die InStr -funksie hoofletter “C” en klein “c” verskillend behandel. Dit het dus vir die woord “ Keuse ” in die string gesoek en het geen passing gekry nie, so het 0 teruggestuur.
- Om die InStr -funksie hoofletteronsensitief te maak, stel die vergelykingsargument na vbTextCompare (sien hieronder).
6357
- Draai die kode.
Jy sal die posisie van die teks kry van die string, of die teks in hoofletters of kleinletters geskryf is.
4. VBA om teks vanaf die regterkant van 'n string te vind
Tot nou toe het die InStr funksie net vir ons die posisie vanaf die linkerkant van die string gegee. Maar wat as jy die teksposisie van die regterkant van die string wil vind.
Die InStrRev-funksie soek van regs af. Die InStrRev -funksie werk baie soortgelyk aan die InStr -funksie en dit sal vir jou die posisie van 'n teks vind vanaf die regterkant van die string.
Sien die volgende voorbeelde om die verskil te verstaan.
- As ons die volgende kode met die InStr -funksie uitvoer, dan,
dit gee ons die posisie ( 16 ) van die eerste teks “ keuse ”.
- Maar as ons dieselfde kode met die InStrRev -funksie hardloop, gee dit dan vir ons die posisie ( 27 ) van die laaste teks “ keuse ”.
Soortgelyke lesings:
- FindNext met behulp van VBA in Excel (2 voorbeelde)
- Hoe om te vind en te vervang met behulp van VBA (11 maniere)
- Vind presiese passing met behulp van VBA in Excel (5 maniere)
5. VBA om posisie van 'n karakter in string te vind
Jy kan ook die posisie van 'n sekere karakter in 'n string vind op dieselfde manier as wat jy teks gevind het.
- Kopieer die volgende kode in jou VBA -kodevenster
6019
- En Laat die makro uitvoer .
Die eerste “ e ” in ons gegewe string is bydie nommer 7 posisie.
6. VBA om substring in 'n string te vind
Hier sal ons leer hoe om te vind of 'n string 'n substring bevat of nie.
Om dit te kry, het ons om 'n IF-stelling in ons kode uit te voer.
- Op dieselfde manier as voorheen, maak Visual Basic Editor oop vanaf die Ontwikkelaar -oortjie en Voeg 'n Module in die kodevenster in.
- Kopieer die volgende kode in die kodevenster en plak dit.
9696
Jou kode is nou gereed om te loop.
- Laat die makro hardloop.
As jou string die substring bevat, sal jy 'n passing gevind kry, anders sal dit geen passing gevind gee nie. In ons voorbeeld wou ons uitvind of ons primêre string " Geluk is 'n keuse " die woord " keuse " bevat of nie. Soos dit gebeur, kry ons 'n Wedstryd gevind resultaat.
7. VBA om string in 'n selreeks te vind
Jy kan vir 'n sekere teks in 'n selreeks string soek en 'n sekere string terugstuur.
Kyk na die volgende voorbeeld waar ons sal vind " Dr. " en wanneer daar 'n passing is, sal dit " Dokter " terugstuur.
- Hieronder is die kode om die resultaat te kry wat hierbo bespreek is,
9621
- Laat die kode en die resultaat word hieronder getoon
- Jy kan die makro verander volgens jou behoefte. Byvoorbeeld, as jy wilom “ Prof. ” in enige sel van string te vind, en kry “ Professor ” as terugkeer, gee dan eenvoudig “ Prof. " as die waarde in plaas van " Dr ." in die 4de reël van die makro en “ Professor ” in plaas van “ Dokter ” in die 5de reël van die makro en definieer die selreeksnommer dienooreenkomstig.
8. VBA om string in 'n sel te vind
Jy kan ook na 'n sekere teks in 'n enkele sel van string soek en 'n sekere string terugstuur.
- Kopieer die volgende kode en plak dit in die kodevenster.
6025
Dit sal soek vir “ Dr. ” in Sel B5 en as dit die passing vind, gee dit dan " Dokter " in Sel C5 .
- Jy kan die makro verander volgens jou behoefte. Byvoorbeeld, as jy " Prof. " in enige sel van string wil vind, en kry " Professor " as terugkeer, gee dan eenvoudig " Prof. " as die waarde in plaas van " Dr ." in die 2de reël van die makro en “ Professor ” in plaas van “ Dokter ” in die 3de reël van die makro en definieer die selverwysingsnommer dienooreenkomstig.
Gevolgtrekking
Hierdie artikel het jou gewys hoe om sekere tekste in string in Excel te vind deur VBA-makro te gebruik. Ek hoop hierdie artikel was baie voordelig vir jou. Vra gerus enige vrae t.o.vdie onderwerp.