Excel VBA InStr-funksjon – forklart med eksempler

I går fikk jeg en e-post fra en av leserne mine – juni.

Hun ville vet hvordan du bruker fet skriftformat til en bestemt del av en streng i en celle. Bruk for eksempel fet skrift til bare ordet ‘Hello’ fra ‘Hello World’.

Og hun ønsket å gjøre dette for hundrevis av celler samtidig.

Siden det er ingen innebygd funksjonalitet i Excel som kan gjøre det, jeg opprettet en enkel makro som bruker Excel VBA InStr-funksjonen (du vil se hvordan du gjør dette i eksempel 4 i denne veiledningen).

Men først, la oss se hvordan Excel VBA InStr-funksjonen fungerer!

Denne veiledningen dekker:

Excel VBA InStr-funksjon

I denne opplæringen vil jeg forklare bruken av InStr-funksjonen i Excel VBA og se noen praktiske eksempler der den kan brukes.

Excel VBA InStr-funksjon – Innledning

InStr-funksjon finner posisjonen til et spesifisert underlag i strengen og returnerer den første posisjonen for forekomsten.

Hvis du for eksempel vil finne posisjonen til ‘x’ i ‘Excel’, ved hjelp av Excel VBA InStr-funksjonen ville returnere 2.

Syntaks for InStr-funksjon

  • – (valgfritt argument) dette er en heltallverdi som forteller InStr-funksjonen startposisjonen den skal begynne å se fra. For eksempel, hvis jeg vil at søket skal starte fra begynnelsen, vil jeg angi verdien som 1. Hvis jeg vil at den skal begynne med det tredje tegnet og framover, vil jeg bruke 3. Hvis utelatt, tas standardverdien 1.
  • Streng1 – Dette er hovedstrengen (eller overordnet streng) du vil søke i. Hvis du for eksempel leter etter posisjonen til x i Excel, vil streng 1 være «Excel».
  • String2 – Dette er understrengen du søker etter. For eksempel hvis du på jakt etter posisjonen til x i Excel, ville String2 være x.
  • – (valgfritt argument) Du kan angi en av følgende tre verdier for argumentet:
    • vbBinaryCompare – Dette vil gjøre et tegn ved tegnsammenligning. Hvis du for eksempel leter etter ‘x’ i ‘Excel’, vil den returnere 2, men hvis du leter etter ‘X’ i ‘Excel’, vil den returnere 0 som X er i øvre Du kan også bruke 0 i stedet for vbBinaryCompare. Hvis argumentet er utelatt, blir dette tatt som standard.
    • vbTextCompare – Dette vil gjøre en tekstlig sammenligning. Hvis du for eksempel ser etter ‘x’ eller ‘X’ i Excel, ville det returnere 2 i begge tilfeller. Dette argumentet ignorerer bokstavsaken. Du kan også bruke 1 i stedet for vbTextCompare.
    • vbDatabaseCompare – Dette brukes bare for Microsoft Access. Det bruker informasjonen i databasen for å utføre sammenligningen. Du kan også bruke 2 i stedet for vbDatabaseCompare.

Tilleggsmerknader om Excel VBA InStr-funksjon:

  • InStr er en VBA funksjon og ikke en regnearkfunksjon. Dette betyr at du ikke kan bruke det i regnearket.
  • Hvis String2 (som er understrenget hvis posisjon du leter etter) er tom, vil funksjonen returnere verdien av argumentet.
  • Hvis InStr-funksjonen ikke finner understrengen i hovedstrengen, ville den returnere 0.

La oss nå se på noen eksempler på bruk av Excel VBA InStr-funksjon

Eksempel 1 – Finne posisjonen fra begynnelsen

I dette eksemplet vil jeg bruke InStr-funksjonen til å finne posisjonen til ‘V’ i ‘Excel VBA’ fra begynnelsen.

Koden for dette vil være:

Sub FindFromBeginning()Dim Position As IntegerPosition = InStr(1, "Excel VBA", "V", vbBinaryCompare)MsgBox PositionEnd Sub

Når du kjører denne koden, vil den vise en meldingsboks med verdien 7, som er posisjonen til ‘V’ i strengen ‘Excel VBA’.

Eksempel 2 – Finne posisjonen fra begynnelsen av det andre ordet

Anta at jeg vil finne posisjonen av ‘the’ i setningen – ‘The quick brown fox jumps over the lat dog’

Imidlertid vil jeg at søket skal begynn med det andre ordet og utover.

I dette tilfellet må vi endre argumentet for å sikre at det spesifiserer posisjonen der det andre ordet starter.

Her er koden som vil gjøre dette:

Sub FindFromSecondWord()Dim Position As IntegerPosition = InStr(4, "The quick brown fox jumps over the lazy dog", "the", vbBinaryCompare)MsgBox PositionEnd Sub

Denne koden viser meldingsboksen med verdien 32 da vi har angitt startposisjonen som 4. Derfor ignorerer den første ‘ ‘Og finner den andre’ den ‘i setningen.

Hvis du vil gjøre den mer dynamisk, kan du forbedre koden slik at den automatisk ignorerer det første ordet.

Her er den forbedrede koden som vil gjøre dette:

Sub FindFromSecondWord()Dim StartingPosition As IntegerDim Position As IntegerStartingPosition = InStr(1, "The quick brown fox jumps over the lazy dog", " ", vbBinaryCompare)Position = InStr(StartingPosition, "The quick brown fox jumps over the lazy dog", "the", vbBinaryCompare)MsgBox PositionEnd Sub

Denne koden finner først plasseringen til et mellomromstegn og lagrer den i variabelen StartingPosition.

Den bruker deretter denne variabelen som startposisjon for å lete etter ordet ‘the’.

Derfor returnerer den 32 (som er startposisjonen til ‘the’ etter det første ordet).

Eksempel 3 – Finne posisjonen til @ i e-postadressen

Du kan enkelt opprette en egendefinert funksjon for å finne posisjonen til @ i en e-postadresse ved hjelp av Excel VBA InStr-funksjonen.

Her er koden for å lage den egendefinerte funksjonen:

Nå kan du bruke denne egendefinerte funksjonen som hvilken som helst annen regnearkfunksjon. Det vil ta en cellehenvisning som inngang og gi deg posisjonen til @ i den.

På samme måte kan du opprette en egendefinert funksjon for å finne posisjonen til en hvilken som helst understreng i hovedstrengen.

Eksempel 4 – Utheving av en del av strengen i celler

Dette er spørsmålet som ble spurt av juni (min leser som også inspirerte meg til å skrive denne opplæringen).

Her er en eksempeldata i formatet June sendte meg:

Forespørselen hennes var å gjøre tallene utenfor parentes fet.

Her er koden jeg opprettet som gjør dette:

Koden ovenfor bruker For Hver løkke til gå gjennom hver av cellene i utvalget. Den identifiserer posisjonen til åpningsbraketttegnet ved hjelp av InStr-funksjonen. Deretter endres skrifttypen til teksten før braketten.

For å bruke denne koden, må du kopiere og lime inn i en modul i VB-editoren.

Når du har limt kopien inn. koden, velg cellene du vil gjøre denne formateringen i, og kjør makroen (som vist nedenfor).

Du vil kanskje også like følgende Excel VBA-veiledninger:

  • Excel VBA SPLIT-funksjon.
  • VBA TRIM-funksjon.
  • Den ultimate guiden til Excel VBA-løkker .
  • En nybegynnerveiledning for bruk for neste løkke i Excel VBA.
  • Hvordan lage og bruke et Excel-tillegg.
  • Slik kombinerer du flere arbeidsbøker. inn i en Excel-arbeidsbok.
  • Hvordan teller du fargede celler i Excel.
  • Nyttige Excel VBA-makroeksempler for nybegynnere.
  • Slik sorterer du data i Excel ved hjelp av VBA (En trinnvis veiledning)

Leave a Reply

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *