VBA InStrRev | Hvordan bruges Excel VBA InStrRev-funktion?

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 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 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- funktionen returnerer 0, hvis strengkontrol  har en længde på nul, eller hvis  der ikke findes en streng, eller "start" -argumentet> længde på strengkamp .
  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 match findes.

Hvordan bruges VBA INSTRREV-funktion?

Du kan downloade denne VBA INSTRREV Excel-skabelon her - VBA INSTRREV Excel-skabelon

Antag, 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' kommando tilgængelig i 'Code' Group i 'Developer' fanen, eller vi kan trykke på Alt + F11 for at åbne Visual Basic Editor.

  • Vi indsætter et modul ved hjælp af menuen 'Indsæt' .

  • Vi opretter en subrutine 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 plads i strengen, fjerde til lagring af 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 samme kolonne, og derefter tildeler vi celleens 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, da vi skal skrive splitnavne i C (3. kolonne) og en kolonne videre.

  • Hvis strengen kun er et ord, der betyder, at der ikke er noget mellemrum 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 både til at finde ud af henholdsvis den første pladsposition og den sidste pladsposition . Det hjælper 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 efter.
  • 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.