VBA InStrRev | Hvordan bruker jeg Excel VBA InStrRev-funksjon?

Excel VBA INSTRREV

VBA INSTRREV Funksjon, som står for 'In String Reverse' , returnerer posisjonen for den første forekomsten av en søkestreng (substring) i en annen streng, fra slutten av strengen (fra høyre til venstre) som vi leter etter en søkbar streng.

INSTRREV- funksjonen begynner å søke etter den søkbare strengen fra slutten av strengen der vi trenger å finne ut, men teller posisjonen fra begynnelsen. Det er en INSTR vba-funksjon til (står for 'In String' ) som også søker etter en streng i en annen streng og returnerer posisjonen, men denne funksjonen starter søket fra begynnelsen av strengen vi ser etter søkbar streng fra.

INSTRREV og INSTR , begge er innebygd streng / tekst VBA-funksjon av MS Excel. Vi kan bruke dem mens vi skriver hvilken som helst makro i Microsoft Visual Basic Editor.

Syntaks

Som vi kan se i bildet ovenfor, er det to obligatoriske og to valgfrie argumenter.

  • StringCheck As String: Dette er det nødvendige argumentet. Vi må gi strenguttrykk det blir søkt etter.
  • StringMatch As String: Dette argumentet er også nødvendig. Vi må spesifisere strenguttrykk det søkes etter.
  • Start så lenge = -1: Dette er et valgfritt argument. Vi spesifiserer det numeriske uttrykket. Som standard tar det -1, noe som betyr at søket begynner på den siste karakterposisjonen. Hvis vi spesifiserer noen positiv verdi som 80, begynner den å søke fra slutten av strengen i de 80 tegnene til venstre.
  • Sammenlign som VbCompareMethod = vbBinaryCompare så lenge: Dette argumentet er valgfritt.

Vi kan spesifisere følgende verdier for dette argumentet.

Returverdier

  1. INSTRREV funksjonen returnerer 0 hvis streng sjekk  er null lengde eller streng kamp  ikke er funnet eller 'Start' argument> lengden på strengen kamp .
  2. Denne funksjonen returnerer 'Null' hvis en strengjekk  eller strengmatch  er 'Null' .
  3. Hvis strengkampen har null lengde, går funksjonen tilbake til start .
  4. Hvis en strengkamp blir funnet innenfor en strengkontroll , returnerer funksjonen posisjonen der samsvar blir funnet.

Hvordan bruke VBA INSTRREV-funksjonen?

Du kan laste ned denne VBA INSTRREV Excel-malen her - VBA INSTRREV Excel-mal

Anta at vi har data for filmnavn og deres regissører. Vi ønsker å dele ut regissørnavn.

Vi har data i 1201 rader. Hvis vi gjør denne oppgaven manuelt, vil det ta mye tid.

For å gjøre det samme, bruker vi VBA-koden. Fremgangsmåten er:

  • Vi må klikke på 'Visual Basic' Command tilgjengelig i 'Code' Group i 'Developer' -fanen, eller vi kan trykke Alt + F11 for å åpne Visual Basic Editor.

  • Vi setter inn en modul ved hjelp av 'Sett inn' -menyen .

  • Vi vil lage en underrutine som heter 'SplittingNames' .

  • Vi trenger 6 variabler. En for lagring av verdiene til cellene, som vi vil manipulere. Andre for lagring av posisjonen til første plass i strengen, tredje for lagring av posisjonen for siste plass i strengen, fjerde for lagring av siste radnummer, femte og sjette for rad og kolonne som vi vil bruke til å skrive ut verdiene i tilstøtende celler.

  • For å finne ut den sist brukte raden i arket, må vi bruke følgende kode.

Denne koden velger først cellen B1 og deretter den sist brukte cellen i samme kolonne, og deretter tildeler vi radnummeret til cellen til 'LastRow' -variabelen.

  • Nå for å manipulere alle cellene i B-kolonnen, vil vi kjøre en 'for' løkke .

  • Vi vil lagre verdien av celler i B-kolonne fra rad 2 til rad 1201 en etter en i 's' variabel for å manipulere dem.

  • Vi må sette verdien til variabelen 'Kolonne' til 3, ettersom vi må skrive delt navn i C (3. kolonne) og en kolonne videre.

  • Hvis strengen bare er ett ord som betyr at det ikke er plass i strengen, vil vi ha strengen i seg selv som utdata. For dette vil vi spesifisere tilstanden ved hjelp av 'Hvis og annet uttalelse' med et stjernetegn (som angir ett eller flere tegn) som følger:

  • Hvis det er plass i strengen, vil vi dele strengen. For å gjøre det samme har vi brukt INSTR og INSTRREV- funksjon både for å finne henholdsvis den første plassposisjonen og den siste plassposisjonen . Det vil hjelpe oss å finne henholdsvis første ord og siste ord i strengen.

INSTR Funksjon tar argumentet som nedenfor:

Argumentdetaljer

  • Start: Fra hvilken posisjon du skal starte.
  • String1: Vi må gi strenguttrykk som det søkes etter.
  • String2: Vi må spesifisere strenguttrykk det søkes etter.

Sammenlignet som VbCompareMethod: Spesifisere sammenligningsmetode. Som standard er det binær sammenligning.

  • Vi må bruke vba LEFT- funksjonen for å trekke ut venstre tegn fra strengen. Vi har brukt 'Last Space-1' for å få venstre tegn før siste mellomrom.

Vi må bruke RIGHT- og LEN-funksjonene for å trekke ut de rette tegnene fra strengen etter første mellomrom.

Makro er skrevet. Nå trenger vi bare å kjøre makroen ved hjelp av F5- tasten.

Kode:

 Sub SplittingNames () Dim s As String Dim FirstSpace As Long Dim LastSPace As Long Dim LastRow As Long Dim Row As Long Dim Column As Long Sheet1.Range ("B1"). Velg Selection.End (xlDown) .Velg LastRow = ActiveCell. Rad for rad = 2 til siste rad s = ark1.Celler (rad, 2). Verdikolonne = 3 Hvis s liker "* *" Så FirstSpace = InStr (1, s, "") LastSPace = InStrRev (s, "") Sheet1.Cells (Row, Column) .Value = Left (s, LastSPace - 1) Sheet1.Cells (Row, Column + 1) .Value = Right (s, Len (s) - FirstSpace) Else Sheet1.Cells (Row, Kolonne) .Value = s End If Next End Sub 

Vi har et resultat nå.