VBA InStrRev - Hoe Excel VBA InStrRev-functie te gebruiken?

Inhoudsopgave

Excel VBA INSTRREV

VBA INSTRREV- functie, zoals staat voor 'In String Reverse' , retourneert de positie van de eerste keer dat een zoekstring (substring) voorkomt in een andere string, beginnend vanaf het einde van de string (van rechts naar links) van waaruit we zoeken een doorzoekbare tekenreeks.

INSTRREV- functie begint te zoeken naar de doorzoekbare tekenreeks vanaf het einde van de tekenreeks die we moeten achterhalen, maar telt de positie vanaf het begin. Er is nog een INSTR VBA-functie (staat voor 'In String' ) die ook zoekt naar een string in een andere string en de positie retourneert, maar deze functie start het zoeken vanaf het begin van de string van waaruit we zoeken naar een doorzoekbare string.

INSTRREV en INSTR , beide zijn ingebouwde String / Text VBA-functie van MS Excel. We kunnen ze gebruiken tijdens het schrijven van een macro in Microsoft Visual Basic Editor.

Syntaxis

Zoals we in de bovenstaande afbeelding kunnen zien, zijn er 2 verplichte en 2 optionele argumenten.

  • StringCheck As String: Dit is het vereiste argument. We moeten een stringuitdrukking geven die wordt doorzocht.
  • StringMatch As String: dit argument is ook vereist. We moeten de tekenreeksexpressie specificeren waarnaar wordt gezocht.
  • Start As Long = -1: Dit is een optioneel argument. We specificeren de numerieke uitdrukking. Standaard duurt het -1, wat betekent dat het zoeken begint op de laatste tekenpositie. Als we een positieve waarde specificeren, zoals 80, dan begint het te zoeken vanaf het einde van de string in die 80 karakters van links.
  • Compare As VbCompareMethod = vbBinaryCompare As Long: Dit argument is optioneel.

We kunnen de volgende waarden specificeren voor dit argument.

Retourwaarden

  1. INSTRREV- functie retourneert 0 als stringcontrole de lengte nul heeft of als string-overeenkomst niet is gevonden of ' start'- argument> lengte van string-match .
  2. Deze functie geeft 'Null' als een reeks cheque of snaar wedstrijd is 'Null.'
  3. Als de tekenreeksovereenkomst de lengte nul heeft, keert de functie terug naar start .
  4. Als een tekenreeksovereenkomst wordt gevonden binnen een tekenreekscontrole , retourneert de functie de positie waarop de overeenkomst is gevonden.

Hoe de VBA INSTRREV-functie te gebruiken?

Stel dat we gegevens hebben voor filmnamen en hun regisseurs. We willen de namen van regisseurs splitsen.

We hebben gegevens in 1201 rijen. Als we deze taak handmatig doen, gaat het veel tijd kosten.

Om hetzelfde te doen, zullen we de VBA-code gebruiken. Stappen zijn:

  • We moeten klikken op het 'Visual Basic'- commando dat beschikbaar is in de ' Code'- groep in het 'Developer'- tabblad, of we kunnen op Alt + F11 drukken om de visuele basiseditor te openen.
  • We zullen een module invoegen met behulp van het menu 'Invoegen' .
  • We zullen een subroutine maken met de naam 'SplittingNames'.
  • We hebben 6 variabelen nodig - één voor het opslaan van de waarden van de cellen, die we zullen manipuleren. Ten tweede voor het opslaan van de positie van de eerste spatie in de string, derde voor het opslaan van de positie van de laatste spatie in de string, vierde voor het opslaan van het laatste rijnummer, vijfde en zesde voor rij en kolom, die we zullen gebruiken om de waarden in aangrenzende cellen.
  • Om de laatst gebruikte rij in het blad te achterhalen, moeten we de volgende code gebruiken.

Deze code selecteert eerst de cel B1 en vervolgens de laatst gebruikte cel in dezelfde kolom, en dan wijzen we het rijnummer van de cel toe aan de 'LastRow'-variabele.

  • Om nu alle cellen in de B-kolom te manipuleren, zullen we een 'for'-lus uitvoeren .
  • We zullen de waarde van de cellen van de B-kolom van rij 2 tot rij 1201 één voor één opslaan in de 's'-variabele om ze te manipuleren.
  • We moeten de waarde van de ingestelde variabele 'Column' tot en met 3 als we nodig hebben om de splitsing namen in C (3 schrijf derde kolom) en een kolom verder.
  • Als de string slechts één woord is, betekent dit dat er geen spatie in de string staat, dan willen we de string zelf als uitvoer. Hiervoor specificeren we de voorwaarde met behulp van 'If and Else statement' met een asterisk-teken (dat een of meer tekens aangeeft) als volgt:
  • Als er ruimte is in de string, dan willen we de string splitsen. Om hetzelfde te doen, hebben we gebruikt INSTR en InStrRev functie zowel om uit te vinden de eerste ruimte positie en de laatste ruimte positie, respectievelijk. Het zal ons helpen om respectievelijk het eerste woord en het laatste woord in de string te vinden.

INSTR-functie heeft het argument zoals hieronder:

Argumentdetails

  • Start: vanuit welke positie te beginnen.
  • String1: We moeten een string-expressie opgeven die wordt doorzocht.
  • String2: we moeten de tekenreeksexpressie opgeven waarnaar wordt gezocht.

Vergeleken als VbCompareMethod: specificerende vergelijkingsmethode. Standaard is het binair vergelijken.

  • We moeten de VBA LEFT- functie gebruiken om linkertekens uit de string te extraheren. We hebben 'Last Space-1' gebruikt om de linkertekens voor de laatste spatie te krijgen.

We moeten de functies RIGHT en LEN gebruiken om de juiste tekens uit de tekenreeks na de eerste spatie te halen.

Macro is geschreven. Nu hoeven we alleen de macro uit te voeren met behulp van de F5- toets.

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"). Selecteer Selection.End (xlDown) .Select LastRow = ActiveCell. Rij voor rij = 2 tot laatste rij s = Blad1. Cellen (rij, 2). Waarde Kolom = 3 Als s als "* *" Dan 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) Anders Sheet1.Cells (Row, Column) .Value = s End If Next End Sub

We hebben nu een resultaat.

Interessante artikelen...