VBA INSTRREV

Excel VBA INSTRREV

VBA INSTRREV- funktionen, 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, med början 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 måste 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 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 de 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  är noll längd eller om strängmatchning  inte hittas eller 'start' argument> längd för 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 , då returnerar den position vid vilken matchning hittas.

Hur använder jag VBA INSTRREV-funktionen?

Du kan ladda ner denna VBA INSTRREV Excel-mall här - VBA INSTRREV Excel-mall

Antag att vi har data för filmnamn och deras regissörer. Vi vill dela upp registernamn.

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å "Visual Basic" -kommandot 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 värdena på cellerna, som vi kommer att manipulera. För det andra för att lagra positionen för första mellanslaget i strängen, tredje för att lagra positionen för det sista utrymmet i strängen, fjärde för att lagra 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.

Denna kod kommer först att markera cellen B1 och sedan markera den senast använda cellen i samma kolumn och sedan tilldela vi radnumret på cellen till variabeln 'LastRow'.

  • Nu för att manipulera alla celler i B-kolumnen kommer vi att köra en 'for' loop .

  • Vi lagrar 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 måste skriva delade namn i C (3: e 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 stjärntecken (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 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:

Argumentdetaljer

  • Start: Från vilken position du ska börja.
  • Sträng1: Vi måste ge stränguttryck som söks.
  • String2: Vi måste ange stränguttryck som du söker efter.

Jämfört som VbCompareMethod: Specifying Comparing method. Som standard är det binär jämförelse.

  • Vi måste använda vba LEFT- funktionen för att extrahera vänster tecken från strängen. Vi har använt 'Last Space-1' för att få de vänstra tecknen före det sista mellanslaget.

Vi måste använda RIGHT och LEN-funktionerna för att extrahera rätt tecken från strängen efter det första mellanslaget.

Makro är skriven. Nu behöver vi bara köra makrot med hjälp av F5- tangenten.

Koda:

 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.