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
- 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 .
- Denne funktion returnerer 'Null', hvis en strengcheck eller strengmatch er 'Null.'
- Hvis strengkampen har nul længde, vender funktionen tilbage til start .
- 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.
