Hvordan finne streng med VBA i Excel (8 eksempler)

  • Dele Denne
Hugh West

Implementering av VBA er den mest effektive, raskeste og sikreste metoden for å kjøre enhver operasjon i Excel. I denne artikkelen vil vi vise deg hvordan du finner bestemte strenger i en annen gitt streng ved å bruke VBA i Excel.

Last ned praksismal

Du kan laste ned den gratis Excel-malen herfra.

VBA å finne i String.xlsm

InStr-funksjon

Microsoft Excel har en innebygd funksjon kalt InStr-funksjonen for å finne posisjonen til spesifikke strenger i en gitt streng.

Generisk syntaks:

InStr([start], string1, string2, [compare])

Her,

Argumenter Obligatorisk/valgfritt Definisjon
start Valgfritt Utgangsposisjon for søket.
  • Som standard beregner InStr -funksjonen tegnposisjonen ved å telle fra 1, ikke fra startposisjonen. Så du kan la dette stå tomt hvis du vil.
streng1 Obligatorisk Strengen det skal søkes i, primærstrengen.
streng2 Obligatorisk Strengen det skal søkes etter i primærstrengen .
sammenlign Valgfritt InStr -funksjonen skiller mellom store og små bokstaver som standard. Men hvis du ønsker å kjøre en kasussensitiv InStr , kan du sende argumentet her for å utføre en viss sammenligning. Dette argumentet kan være følgendeverdier,
  • vbBinaryCompare -> utfører en binær sammenligning, returnerer verdi 0
  • vbTextCompare -> utfører en tekstsammenligning, returnerer verdi 1
  • vbDatabaseCompare -> utfører en databasesammenligning, returnerer verdi 2

Som standard tar InStr vbBinaryCompare som sammenligningsargumentet.

8 enkle eksempler for å finne spesifikke strengposisjoner i gitt streng ved å bruke VBA

La oss se noen enkle eksempler for å finne posisjonene til visse strenger i en gitt streng ved å bruke VBA .

1. VBA for å finne posisjon til tekst i streng

Nedenfor er et eksempel på InStr for å finne posisjonen til en tekst i en streng.

  • Trykk Alt + F11 på tastaturet eller gå til fanen Utvikler -> Visual Basic for å åpne Visual Basic Editor .

  • I popup-kodevinduet, fra menylinjen , klikk Sett inn -> Modul .

  • Nå i kodevinduet, skriv et enkelt InStr -program inne i en VBA Sub Prosedyre (se nedenfor).
8159

Koden din er nå klar til å kjøre.

  • Trykk F5 på tastaturet eller fra menylinjen velg Kjør -> Kjør Sub/UserForm . Du kan også bare klikke på det lille Spill-ikonet i undermenylinjen for å kjøre makroen.

Du vil se at popup-meldingsboksen vil gi deg et nummererklærer posisjonen til teksten du ønsket å sjekke.

Forklaring:

Vår primære streng, « Happiness er et valg » er en setning på 21 bokstaver (med mellomrom) og vi ønsket å finne posisjonen til teksten « valg » i den strengen. Teksten « valg » startet fra den 16. posisjonen til primærstrengen, derfor fikk vi nummer 16 som utdata i meldingsboksen.

2. VBA for å finne tekst fra en bestemt posisjon i streng

La oss nå finne ut hva som ville skje hvis vi ønsket å få posisjonen fra et bestemt nummer.

  • Samme måte som før, åpne Visual Basic Editor fra kategorien Utvikler og Sett inn en modul i kodevinduet.
  • I kodevinduet, skriv et enkelt InStr -program vist ovenfor og send verdien i startargumentet i henhold til posisjonen du vil telle teksten fra.
4620

  • Neste, Kjør koden.

Du vil se at popup-meldingsboksen vil gi deg et nummer som angir posisjonen til teksten med utgangspunkt i en bestemt posisjon som du ønsket å sjekke.

Forklaring:

Som vi allerede visste (fra fase 1-diskusjonen) at teksten « valg » startet fra posisjonen 16 , så vi la inn to « valg ” i primærstrengen og sett 17 som vår1. parameter for å hoppe over det første " valget ". Så vi kjørte makroen ovenfor og den viste oss posisjonsnummer 27 som er nøyaktig posisjonsnummeret til andre « valget » i den gitte strengen.

3. VBA for å finne tekst med InStr-funksjon som ikke skiller mellom store og små bokstaver i String

Fra introduksjonen av InStr -funksjonen vet du allerede at InStr -funksjonen som standard er skiller mellom store og små bokstaver. La oss finne ut av det med et eksempel.

Se følgende VBA -kode, der vi ønsket å finne posisjonen til ordet « Choice " med en stor "C" i strengen " Lykke er et valg " der valg er skrevet med en liten "c" .

  • Kjør koden og finn 0 som utdata.

Det er fordi InStr -funksjonen behandler stor «C» og liten «c» forskjellig. Så den søkte etter ordet « Choice » i strengen og fikk ingen treff, så returnerte 0 .

  • For å gjøre InStr -funksjonen uavhengig av store og små bokstaver , sett sammenligningsargumentet til vbTextCompare (se nedenfor).
5814

  • Kjør koden.

Du får posisjonen til teksten fra strengen, enten teksten er skrevet med store eller små bokstaver .

4. VBA for å finne tekst fra høyre for en streng

Inntil nå ga InStr funksjonen oss bare posisjonen fra venstre side av strengen. Men hva om du vil finne tekstposisjonen fra høyre side av strengen.

InStrRev-funksjonen søker fra høyre. InStrRev -funksjonen fungerer veldig likt InStr -funksjonen, og den vil finne posisjonen til en tekst fra høyre side av strengen.

Se følgende eksempler for å forstå forskjellen.

  • Hvis vi kjører følgende kode med InStr -funksjonen,

det gir oss posisjonen ( 16 ) til den første teksten " valg ".

  • Men hvis vi kjører den samme koden med InStrRev -funksjonen,

gir den oss posisjonen ( 27 ) i den siste teksten " valg ".

Lignende lesninger:

  • FindNext ved å bruke VBA i Excel (2 eksempler)
  • Hvordan finne og erstatte med VBA (11 måter)
  • Finn eksakt samsvar ved å bruke VBA i Excel (5 måter)

5. VBA for å finne posisjonen til et tegn i streng

Du kan også finne plasseringen til et bestemt tegn i en streng på samme måte som du fant tekst.

  • Kopier følgende kode i VBA -kodevinduet
4334

  • Og Kjør makroen.

Den første " e " i vår gitte streng er kl.tallet 7 posisjon.

6. VBA for å finne delstreng i en streng

Her vil vi lære hvordan man finner ut om en streng inneholder en delstreng eller ikke.

For å få det, har vi for å kjøre en IF Statement i koden vår.

  • På samme måte som før, åpne Visual Basic Editor fra Utvikler -fanen og Sett inn en modul i kodevinduet.
  • I kodevinduet kopierer du følgende kode og limer den inn.
8956

Din koden er nå klar til å kjøre.

  • Kjør makroen.

Hvis strengen din inneholder understrengen , vil du få en treff funnet , ellers returnerer den ingen samsvar funnet. I vårt eksempel ønsket vi å finne ut om vår primærstreng « Lykke er et valg » inneholder ordet « valg » eller ikke. Som det gjør, får vi et Match funnet -resultat.

7. VBA for å finne streng i et celleområde

Du kan søke etter en bestemt tekst i et celleområde med streng og returnere en bestemt streng.

Se på følgende eksempel hvor vi vil finn « Dr. » og når det er en kamp vil den returnere « Doctor ».

  • Nedenfor er koden for å få resultatet diskutert ovenfor,
6887

  • Kjør kode og resultatet vises nedenfor

  • Du kan endre makroen etter behov. For eksempel hvis du vilfor å finne " Prof. " i en hvilken som helst celle i strengen, og få " Professor " som retur, så send bare " Prof. " som verdien i stedet for " Dr ." i den fjerde linjen i makroen og « Professor » i stedet for « Doktor » i den femte linjen i makroen og definere celleområdenummer tilsvarende.

8. VBA for å finne streng i en celle

Du kan også søke etter en bestemt tekst i en enkelt celle med streng og returnere en bestemt streng.

  • Kopiér følgende kode og lim den inn i kodevinduet.
8381

Den vil søke etter « Dr. ” i Celle B5 og hvis den finner treffet, returnerer den “ Doctor ” i Celle C5 .

  • Du kan endre makroen etter behov. For eksempel, hvis du vil finne " Prof. " i en hvilken som helst celle i strengen, og få " Professor " som retur, så bare send " Prof. " som verdien i stedet for " Dr ." i den andre linjen i makroen og « Professor » i stedet for « Doktor » i den tredje linjen i makroen og definere cellereferansenummer tilsvarende.

Konklusjon

Denne artikkelen viste deg hvordan du finner bestemte tekster i streng i Excel ved å bruke VBA-makro. Jeg håper denne artikkelen har vært veldig nyttig for deg. Still gjerne spørsmål vedremnet.

Hugh West er en svært erfaren Excel-trener og analytiker med over 10 års erfaring i bransjen. Han har en bachelorgrad i regnskap og finans og en mastergrad i bedriftsøkonomi. Hugh har en lidenskap for undervisning og har utviklet en unik undervisningstilnærming som er enkel å følge og forstå. Hans ekspertkunnskap om Excel har hjulpet tusenvis av studenter og fagfolk over hele verden med å forbedre sine ferdigheter og utmerke seg i karrieren. Gjennom bloggen sin deler Hugh sin kunnskap med verden, og tilbyr gratis Excel-opplæringer og nettbasert opplæring for å hjelpe enkeltpersoner og bedrifter å nå sitt fulle potensial.