VBA InStrRev - Hur använder jag Excel VBA InStrRev-funktionen?

Innehållsförteckning

Excel VBA INSTRREV

VBA INSTRREV- funktion, som står för 'In String Reverse' , returnerar positionen för den första förekomsten av en söksträng (substring) i en annan sträng, från slutet av strängen (från höger till vänster) från vilken vi letar efter en sökbar sträng.

INSTRREV- funktionen börjar söka efter den sökbara strängen från slutet av strängen där vi behöver ta reda på men räknar positionen från början. Det finns ytterligare en INSTR VBA-funktion (står för 'In String' ) som också söker efter en sträng i en annan sträng och returnerar positionen, men den här funktionen startar sökningen från början av strängen från vilken vi letar efter sökbar sträng.

INSTRREV och INSTR , båda är inbyggda VBA-funktioner för sträng / text i MS Excel. Vi kan använda dem när vi skriver något makro i Microsoft Visual Basic Editor.

Syntax

Som vi kan se i bilden ovan finns det två obligatoriska och två valfria argument.

  • StringCheck As String: Detta är det nödvändiga argumentet. Vi måste ge stränguttryck som söks.
  • StringMatch As String: Detta argument krävs också. Vi måste ange det stränguttryck som du söker efter.
  • Starta så länge = -1: Detta är ett valfritt argument. Vi specificerar det numeriska uttrycket. Som standard tar det -1, vilket innebär att sökningen börjar vid den sista teckenpositionen. Om vi ​​anger något positivt värde som 80, börjar det söka från slutet av strängen i dessa 80 tecken till vänster.
  • Jämför som VbCompareMethod = vbBinaryCompare så länge: Detta argument är valfritt.

Vi kan ange följande värden för detta argument.

Returvärden

  1. INSTRREV- funktionen returnerar 0 om strängkontroll har noll längd eller strängmatchning inte hittas eller 'start' argument> längd strängmatchning .
  2. Den här funktionen returnerar "Null" om en strängkontroll eller strängmatchning är "Null".
  3. Om strängmatchningen har noll längd återgår funktionen till start .
  4. Om en sträng match hittas inom en sträng kontroll , sedan funktionen returnerar positionen där matchning hittas.

Hur använder jag VBA INSTRREV-funktionen?

Anta att vi har data för filmnamn och deras regissörer. Vi vill dela upp regissörens namn.

Vi har data i 1201 rader. Om vi ​​gör den här uppgiften manuellt kommer det att ta mycket tid.

För att göra detsamma använder vi VBA-koden. Stegen är:

  • Vi måste klicka på kommandot "Visual Basic" tillgängligt i "Kod" -gruppen i fliken "Utvecklare" , eller så kan vi trycka på Alt + F11 för att öppna Visual Basic Editor.
  • Vi sätter in en modul med hjälp av menyn 'Infoga' .
  • Vi kommer att skapa en underrutin med namnet 'SplittingNames'.
  • Vi behöver 6 variabler - en för att lagra cellernas värden, som vi kommer att manipulera. Andra för att lagra positionen för första mellanslaget i strängen, tredje för att lagra positionen för sista mellanslaget i strängen, fjärde för att lagra det sista radnumret, femte och sjätte för rad och kolumn, som vi kommer att använda för att skriva ut värdena i intilliggande celler.
  • För att ta reda på den senast använda raden i arket måste vi använda följande kod.

Den här koden markerar först cellen B1 och markerar sedan den senast använda cellen i samma kolumn, och sedan tilldelar vi radnumret för cellen till variabeln 'LastRow'.

  • Nu för att manipulera alla celler i B-kolumnen kommer vi att köra en 'for' loop .
  • Vi kommer att lagra värdet på celler i B-kolumn från rad 2 till rad 1201 en efter en i 's' variabel för att manipulera dem.
  • Vi måste ställa in värdet på variabeln 'Kolumn' till 3 eftersom vi behöver skriva delade namn i C ( tredje kolumn) och en kolumn framåt.
  • Om strängen bara är ett ord som betyder att det inte finns något utrymme i strängen vill vi att strängen själv ska vara utdata. För detta kommer vi att specificera villkoret med 'If and Else statement' med ett asterisk tecken (som anger ett eller flera tecken) enligt följande:
  • Om det finns utrymme i strängen vill vi dela upp strängen. För att göra detsamma har vi använt INSTR- och INSTRREV- funktionerna båda för att ta reda på den första rymdpositionen respektive den sista platspositionen. Det hjälper oss att hitta det första ordet och det sista ordet i strängen.

INSTR-funktionen tar argumentet enligt nedan:

Argument Details

  • Start: From which position to start.
  • String1: We need to give string expression being searched.
  • String2: We need to specify string expression being searched for.

Compared as VbCompareMethod: Specifying Comparing method. By default, it is binary compare.

  • We need to use the VBA LEFT function to extract left characters from the string. We have used ‘Last Space-1’ to get the left characters before the last space.

We need to use the RIGHT and LEN functions to extract the right characters from the string after the first space.

Macro is written. Now we just need to run the macro using the F5 key.

Code:

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älj Selection.End (xlDown). Välj LastRow = ActiveCell. Rad för rad = 2 till LastRow s = Sheet1.Cells (rad, 2) .Value Column = 3 If s Like "* *" Then 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, Kolumn) .Value = s End If Next End Sub

Vi har ett resultat nu.

Intressanta artiklar...