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
- INSTRREV funksjonen returnerer 0 hvis streng sjekk er null lengde eller streng kamp ikke er funnet eller 'Start' argument> lengden på strengen kamp .
- Denne funksjonen returnerer 'Null' hvis en strengjekk eller strengmatch er 'Null' .
- Hvis strengkampen har null lengde, går funksjonen tilbake til start .
- 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-malAnta 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å.