Hoe om string met VBA in Excel te vind (8 voorbeelde)

  • Deel Dit
Hugh West

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.
  • By verstek bereken die InStr -funksie die karakterposisie deur vanaf 1 te tel, nie vanaf die beginposisie nie. So, jy kan hierdie leeg laat as jy wil.
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,
  • vbBinaryCompare -> voer 'n binêre vergelyking uit, gee waarde 0
  • vbTextCompare -> voer 'n teksvergelyking uit, gee waarde 1
  • vbDatabaseVergelyk -> voer 'n databasisvergelyking uit, gee waarde 2

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.

Hugh West is 'n hoogs ervare Excel-afrigter en ontleder met meer as 10 jaar ondervinding in die bedryf. Hy het 'n Baccalaureusgraad in Rekeningkunde en Finansies en 'n Meestersgraad in Besigheidsadministrasie. Hugh het 'n passie vir onderrig en het 'n unieke onderrigbenadering ontwikkel wat maklik is om te volg en te verstaan. Sy kundige kennis van Excel het duisende studente en professionele persone wêreldwyd gehelp om hul vaardighede te verbeter en uit te blink in hul loopbane. Deur sy blog deel Hugh sy kennis met die wêreld, en bied gratis Excel-tutoriale en aanlyn opleiding aan om individue en besighede te help om hul volle potensiaal te bereik.