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

Innholdsfortegnelse

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 strenguttrykket 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 i en strengkontroll , returnerer funksjonen posisjonen der samsvaret blir funnet.

Hvordan bruke VBA INSTRREV-funksjonen?

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" -kommandoen som er tilgjengelig i "Code" -gruppen 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 å lagre cellens verdier, 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 vil først velge celle B1 og deretter velge den sist brukte cellen i samme kolonne, og deretter tilordner 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 på variabelen 'Kolonne' til 3 ettersom vi trenger å skrive delt navn i C ( 3. kolonne) og en kolonne videre.
  • Hvis strengen bare er ett ord som betyr at det ikke er mellomrom 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- funksjonene begge for å finne ut henholdsvis den første plassposisjonen og den siste plassposisjonen . Det vil hjelpe oss å finne henholdsvis det første og det siste ordet i strengen.

INSTR Funksjon tar argumentet som nedenfor:

Argument Details

  • Start: From which position to start.
  • String1: We need to give string expression being searched.
  • String2: We need to specify string expression being searched for.

Compared as VbCompareMethod: Specifying Comparing method. By default, it is binary compare.

  • We need to use the VBA LEFT function to extract left characters from the string. We have used ‘Last Space-1’ to get the left characters before the last space.

We need to use the RIGHT and LEN functions to extract the right characters from the string after the first space.

Macro is written. Now we just need to run the macro using the F5 key.

Code:

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å.

Interessante artikler...