VBA INSTRREV

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.

De INSTRREV- functie begint met het 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 teruggeeft, maar deze functie start de zoekopdracht 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, begint het te zoeken vanaf het einde van de tekenreeks in die 80 tekens 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?

U kunt deze VBA INSTRREV Excel-sjabloon hier downloaden - VBA INSTRREV Excel-sjabloon

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 op het tabblad 'Developer' of we kunnen op Alt + F11 drukken om de visuele basiseditor te openen.

  • We zullen een module invoegen via het menu 'Invoegen' .

  • We zullen een subroutine maken met de naam 'SplittingNames' .

  • We hebben 6 variabelen nodig. Een 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 af ​​te drukken.

  • 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 variabele 'LastRow'.

  • 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 variabele 'Kolom' instellen op 3, omdat we de splitsingsnamen in C (3e kolom) en een kolom verder moeten schrijven.

  • 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 in de string is, willen we de string splitsen. Om hetzelfde we hebben gebruikt doen INSTR en InStrRev functie beide respectievelijk uit te vinden de eerste ruimte positie en de laatste ruimte positie. 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.