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
- 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 .
- 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 match findes.
Hvordan bruges VBA INSTRREV-funktion?
Du kan downloade denne VBA INSTRREV Excel-skabelon her - VBA INSTRREV Excel-skabelonAntag, 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.