Slik bruker du InStr-funksjonen i VBA (3 enkle eksempler)

  • Dele Denne
Hugh West

Mens vi jobber med Excel VBA-koder, kommer vi over noen få innebygde funksjoner som konverterer en kompleks oppgave til en liten én-linjes kode. InStr er en slik funksjon tilgjengelig i Excel VBA som søker etter en bestemt streng innenfor en annen gitt streng med utgangspunkt i en gitt posisjon. I dag skal jeg vise hvordan du kan bruke InStr -funksjonen i VBA til å søke etter en spesifikk streng innenfor en annen gitt streng.

Last ned øvelsesarbeidsbok

InStr Function.xlsm

Introduksjon til VBA InStr Function

  • Sammendrag

Søker etter en bestemt streng innenfor en gitt streng, med utgangspunkt i en gitt posisjon. Hvis finner et samsvar, returnerer posisjonen i den gitte strengen der kampen startet.

  • Syntaks

InStr([start ],streng1,streng2,[sammenlign])

  • Argumenter
ARGUMENT KRAV BESKRIVELSE

[start] Valgfritt Plasseringen den vil begynne å søke fra. Standard er 1.
streng1 Obligatorisk Strengen som den søker etter en gitt streng innenfor.
streng2 Obligatorisk Strengen den søker etter i en gitt streng.
[sammenlign] Valgfritt En numerisk verdi mellom {-1,0,1,2} som spesifiserer typen sammenligning. Destandard er -1 (vbUseCompareOption). Hvis Option Compare-setningen ikke er spesifisert, utfør binær sammenligning.

Merk:

  • Selv om [start] -argumentet og [sammenlign] -argumentet er valgfritt, du trenger [start] -argumentet hvis du spesifiserer argumentet [sammenlign] . Ellers vil det oppstå en feil.
  • Hvis ett av eller begge [start] -argumentet og [sammenlign] -argumentet er Null vil du møte en feil.
  • De fire angitte verdiene i argumentet [sammenlign] utfører fire forskjellige typer sammenligning. De er nevnt nedenfor:
VERDI KUNST BESKRIVELSE

-1 vbUseCompareOption Utfører sammenligningen spesifisert i Option Compare-setningen.
0 vbBinaryCompare Utfører en binær sammenligning.
1 vbTextCompare Utfører en tekstsammenligning.
2 vbDatabaseCompare Utfører en sammenligning basert på databasen din .
  • Option Compare -setningen er en setning gitt før hoved-VBA-koden starter. Den spesifiserer om koden skal søke etter en binær sammenligning eller tekstsammenligning ved behov.

Alternativ Sammenlign tekst

    • Enkelt sagt betyr binær sammenligning at det skilles mellom store og små bokstaversammenligning.
    • Forenklet sagt betyr tekstsammenligning sammenligning uten store og små bokstaver.
  • Returverdi
    • Returnerer posisjonen i streng1 som streng2 startet fra.
    • I tilfelle streng2 ikke blir funnet innenfor streng1 starter fra start -posisjonen, returnerer 0.
    • Hvis streng1 har null lengde, returnerer 0.
    • Hvis streng2 har null lengde, returnerer argumentet start .
    • Og til slutt, hvis noen av streng1 eller streng2 er Null , returnerer en feil.

3 enkle eksempler å bruke VBA InStr-funksjonen

I denne delen vil vi se tre enkle eksempler på bruk av VBA InStr -funksjonen i Excel. La oss se det første eksemplet på InStr -funksjonen i VBA-koder.

1. Bestemme om en adresse er en e-postadresse eller ikke ved å bruke VBA InStr-funksjonen

Her har vi tatt et datasett som inneholder noen kontaktadresser til kunder. Målet vårt her vil være å identifisere om adressene er e-postadresser eller ikke.

Nå skal vi utvikle en VBA-kode ved å bruke InStr funksjonen for å identifisere enten det er en e-postadresse eller ikke. For å gjøre det, følg trinnene nedenfor.

Trinn:

  • I begynnelsen, gå til Utvikler -fanen og velg Visual Basic ( Eller trykk Alt+F11) for å åpne VBA vindu.

  • Deretter, i VBA -vinduet, går du til Sett inn > Modul .

  • Deretter limer du inn følgende kode på modulen:
8437

  • Vi har dessuten laget en funksjon kalt BESLUTNING . Den avgjør om en adresse er en e-postadresse eller ikke. La oss bruke funksjonen på datasettet vi har.
  • På celle C5 skriver du ned følgende formel og autofyll resten av cellene ved å bruke Fyllhåndtak .
=DECISION(B5)

  • Som vi kan se, har vi identifisert hver adresse om det er en e-postadresse eller ikke.

🎓 Hvordan fungerer koden?

  • Funksjon BESLUTNING(streng1 Som streng)

For det første oppretter dette en funksjon kalt BESLUTNING med en strengargument kalt streng1 .

  • Dim posisjon som heltall

Det erklærer en heltallsvariabel kalt Posisjon .

  • Posisjon = InStr(1, string1, “@”, 0)

Dette tildeler verdien av Posisjon -variabel som utdata fra InStr -funksjonen med argumentene 1, string1, "@" og 0 . Kort sagt, dette tilordner posisjonen i adressen der det er en “@” .

  • Hvis Posisjon = 0 Da BESLUTNING = “Ikke e-post”

Den tilordner utdata fra BESLUTNING -funksjonen som “Ikke e-post” , hvis posisjonen variabelen er 0 , det betyr at det ikke var noen “@” i adressen.

(Husk hvis en streng ikke finnes innenfor den gitte strengen, InStr -funksjonen returnerer 0 ).

  • Else DECISION = “E-post”

Dette tildeler utgang av BESLUTNING -funksjonen som “E-post” hvis det var en “@” i adressen. Dermed blir adressene der det er "@" kategorisert som E-post , og resten kategoriseres som "Ikke e-post" .

Lignende avlesninger

  • Hvordan bruke VBA UCASE-funksjonen i Excel (4 eksempler)
  • Bruk MsgBox-funksjonen i Excel VBA (En komplett veiledning)
  • Hvordan bruke VBA SPLIT-funksjonen i Excel (5 eksempler)
  • Bruk LCase-funksjonen i VBA i Excel (Med 4 eksempler)
  • Hvordan bruke Fix-funksjonen i Excel VBA (4 eksempler)

2. Bruke VBA InStr-funksjonen for Trekke ut utvidelsen av noen e-postadresser

Her har vi en liste over noen e-postadresser til noen kunder. Denne gangen vil vi trekke ut utvidelsen av e-postadressen som om de har gmail.com eller yahoo.com .

For å gjøre det, følg trinnene nedenfor.

Trinn:

  • Til å begynne med, som den forrige metoden, åpne en ny VBA modul og lim inn følgende kode i vinduet.
7233

  • I tillegg har vi laget en funksjon som heter UTVIDELSE . Den trekker ut utvidelsen av en hvilken som helst e-postadresse.
  • La oss dessuten bruke denne funksjonen på datasettet vi har. Skriv først inn denne formelen på celle C5 og dobbeltklikk deretter på Fyllhåndtaket .
=EXTENSION(B5)

  • Til slutt kan vi se at vi har trukket ut utvidelsen av alle e-postene.

🎓 Hvordan fungerer koden?

  • Funksjon EXTENSION(E-post som streng)

Dette oppretter en ny funksjon kalt EXTENSION , med en strengargument kalt E-post .

  • Dim posisjon som heltall

Denne delen erklærer en heltallsvariabel kalt Posisjon .

  • Posisjon = InStr(1, Email, “@”, 0)

Dette tildeler verdien av Posisjon -variabel som utdata fra InStr -funksjonen med argumentene 1, Email, "@" og 0 . Kort sagt, dette tildeler posisjonen i e-posten der det er en “@” .

  • EXTENSION = Right(Email, (Len) (E-post) – Posisjon))

Denne delen tilordner utdata fra EXTENSION -funksjonen som tegnene etter symbolet “@” . Dette er den nødvendige utvidelsen av E-post .

3. Trekke ut for- eller etternavnet fra et navn ved å bruke VBA InStr-funksjonen

Til slutt vil vi utføre en unik oppgave. Denne gangen har vi navnene på noen ansatte iet selskap. Og vi vil prøve å bygge en funksjon for å trekke ut enten fornavnet eller etternavnet til de ansatte.

For å gjøre det, følg trinnene nedenfor.

Trinn:

  • For det første, i likhet med metode 1 , lim inn koden nedenfor i en ny modul i VBA-vinduet.
7031

  • Her har vi laget en funksjon kalt SHORTNAME som trekker ut enten fornavnet eller etternavnet fra et navn. La oss bruke denne formelen på datasettet vårt.
  • Først, for å trekke ut fornavnet, skriv ned formelen nedenfor i celle C5 .
=SHORTNAME(B5,-1)

  • Til slutt, for å trekke ut etternavnene, skriver vi ned følgende formel i D5 :
=SHORTNAME(B5,1)

  • Etterpå, hvis vi automatisk fyller ut resten av cellene med Fill Handler , vil vi se ønsket resultat.

🎓 Hvordan fungerer koden?

  • Funksjon KORTNAVN(Navn som streng, første_eller_siste som heltall)

Den lager en ny funksjon kalt KORTNAVN med ett strengargument kalt Navn og ett heltallsargument kalt Først_eller_Siste .

  • Dim Break As Integer

Denne delen erklærer en ny heltallsvariabel kalt Break .

  • Break = InStr(1, Name, ” “, 0)

Den tilordner verdien av Break -variabelen som utdata fra InStr -funksjonen med argumentene 1, Navn, “ ” og 0 . Kort sagt, dette tilordner posisjonen i Navn der det er et mellomrom (“ ”).

  • Hvis First_or_Last = -1 Then SHORTNAME = Left(Name, Break – 1)

Denne linjen tilordner utdataene til SHORTNAME -funksjonen som tegnene før mellomrommet , hvis argumentet First_or_Last er -1. Dette er fornavnet.

  • SHORTNAME = Right(Name, Len(Name) – Break)

Denne delen tilordner utdata fra SHORTNAME fungerer som tegnene etter mellomrom , hvis argumentet First_or_Last er 1. Dette er etternavnet.

Konklusjon

På denne måten kan du skrive VBA-koder med InStr -funksjonen som finner ut posisjonen til en bestemt streng innenfor en annen gitt streng, og så kan du lage dine egne funksjoner for en rekke bruksområder. Videre, hvis du har spørsmål, spør oss gjerne.

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.