VBA InStrRev - Hvordan bruges Excel VBA InStrRev-funktion?

Indholdsfortegnelse

Excel VBA INSTRREV

VBA INSTRREV- funktion, som står for 'In String Reverse' , returnerer positionen for den første forekomst af en søgestreng (substring) i en anden streng, startende fra slutningen af ​​strengen (fra højre til venstre), hvorfra vi leder efter en søgbar streng.

INSTRREV- funktionen begynder at søge efter den søgbare streng fra slutningen af ​​den streng, hvor vi skal finde ud af, men tæller positionen fra starten. Der er endnu en INSTR VBA-funktion (står for 'In String' ), der også søger efter en streng i en anden streng og returnerer positionen, men denne funktion starter søgningen fra begyndelsen af ​​den streng, hvorfra vi leder efter søgbar streng.

INSTRREV og INSTR , begge er indbygget streng / tekst VBA-funktion i MS Excel. Vi kan bruge dem, mens vi skriver enhver makro i Microsoft Visual Basic Editor.

Syntaks

Som vi kan se i ovenstående billede, er der 2 obligatoriske og 2 valgfri argumenter.

  • StringCheck As String: Dette er det krævede argument. Vi er nødt til at give strengekspression, der søges efter.
  • StringMatch As String: Dette argument er også nødvendigt. Vi skal specificere det strengudtryk, der søges efter.
  • Start så længe = -1: Dette er et valgfrit argument. Vi specificerer det numeriske udtryk. Som standard tager det -1, hvilket betyder, at søgningen begynder ved den sidste karakterposition. Hvis vi angiver en hvilken som helst positiv værdi som 80, begynder den at søge fra slutningen af ​​strengen i de 80 tegn til venstre.
  • Sammenlign som VbCompareMethod = vbBinaryCompare så længe: Dette argument er valgfrit.

Vi kan specificere følgende værdier for dette argument.

Returneringsværdier

  1. INSTRREV funktion returnerer 0, hvis strengen kontrol er på nul længde eller snor kamp er ikke fundet eller 'Start' argument> længden af strengen kamp .
  2. Denne funktion returnerer 'Null', hvis en strengcheck eller strengmatch er 'Null.'
  3. Hvis strengkampen har nul længde, vender funktionen tilbage til start .
  4. Hvis der findes en strengkamp inden for en strengkontrol , returnerer funktionen den position, hvor matchet findes.

Hvordan bruges VBA INSTRREV-funktion?

Antag, at vi har data for filmnavne og deres instruktører. Vi vil opdele direktørnavne.

Vi har data i 1201 rækker. Hvis vi udfører denne opgave manuelt, vil det tage meget tid.

For at gøre det samme bruger vi VBA-koden. Trin er:

  • Vi er nødt til at klikke på 'Visual Basic' -kommandoen, der er tilgængelig i 'Kode'- gruppen i fanen ' Udvikler ' , eller vi kan trykke på Alt + F11 for at åbne den visuelle grundeditor.
  • Vi indsætter et modul ved hjælp af menuen 'Indsæt' .
  • Vi opretter en underrutine ved navn 'SplittingNames.'
  • Vi har brug for 6 variabler - en til lagring af cellernes værdier, som vi vil manipulere. Andet til lagring af positionen for første plads i strengen, tredje til lagring af positionen for sidste mellemrum i strengen, fjerde til lagring af det sidste række nummer, femte og sjette for række og kolonne, som vi vil bruge til at udskrive værdierne i tilstødende celler.
  • For at finde ud af den sidst anvendte række i arket skal vi bruge følgende kode.

Denne kode vælger først celle B1 og vælger derefter den sidst anvendte celle i den samme kolonne, og derefter tildeler vi cellens række nummer til 'LastRow' variablen.

  • Nu for at manipulere alle cellerne i B-kolonnen kører vi en 'for' løkke .
  • Vi gemmer værdien af ​​celler i B-kolonne fra række 2 til række 1201 en efter en i 's' variabel for at manipulere dem.
  • Vi er nødt til at indstille værdien af variablen 'Kolonne' til 3 som vi har brug for at skrive split navne i C (3 rd Kolonne) og en søjle og fremefter.
  • Hvis strengen kun er et ord, der betyder, at der ikke er plads i strengen, så vil vi have selve strengen som output. Til dette specificerer vi betingelsen ved hjælp af 'Hvis og andet-sætning' med et stjerne tegn (der angiver et eller flere tegn) som følger:
  • Hvis der er plads i strengen, så vil vi dele strengen. For at gøre det samme har vi brugt INSTR og INSTRREV- funktion begge til at finde ud af henholdsvis den første pladsposition og den sidste pladsposition . Det vil hjælpe os med at finde henholdsvis det første og det sidste ord i strengen.

INSTR-funktionen tager argumentet som nedenfor:

Argumentoplysninger

  • Start: Fra hvilken position du skal starte.
  • String1: Vi skal give strengekspression, der søges i.
  • String2: Vi skal specificere strengudtryk, der søges efter.

Sammenlignet med VbCompareMethod: Angivelse af sammenligningsmetode. Som standard er det binært sammenligning.

  • Vi skal bruge VBA LEFT- funktionen til at udtrække venstre tegn fra strengen. Vi har brugt 'Last Space-1' til at få de venstre tegn inden det sidste mellemrum.

Vi skal bruge RIGHT og LEN-funktionerne til at udtrække de rigtige tegn fra strengen efter det første mellemrum.

Makro er skrevet. Nu skal vi bare køre makroen ved hjælp af 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"). Vælg Selection.End (xlDown). Vælg LastRow = ActiveCell. Række for række = 2 til sidste række s = ark1.Celler (række, 2). Værdikolonne = 3 Hvis s kan lide "* *" Derefter FirstSpace = InStr (1, s, "") LastSPace = InStrRev (s, "") Ark1.Celler (række, kolonne) .Værdi = Venstre (s, LastSPace - 1) Ark1.Celler (række, kolonne + 1) .Værdi = højre (s, Len (s) - FirstSpace) Ellers ark1.Celler (række, Kolonne) .Værdi = s Afslut hvis næste afslutning Sub

Vi har et resultat nu.

Interessante artikler...