Innholdsfortegnelse
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.
|
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,
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.