VBA InStrRev - Wie verwende ich die Excel VBA InStrRev-Funktion?

Inhaltsverzeichnis

Excel VBA INSTRREV

Die VBA INSTRREV- Funktion, die für 'In String Reverse' steht , gibt die Position des ersten Auftretens einer Suchzeichenfolge (Teilzeichenfolge) in einer anderen Zeichenfolge zurück, beginnend am Ende der Zeichenfolge (von rechts nach links), nach der wir suchen eine durchsuchbare Zeichenfolge.

Die Funktion INSTRREV beginnt am Ende der Zeichenfolge, in der wir herausfinden müssen, nach der durchsuchbaren Zeichenfolge zu suchen, zählt jedoch die Position von Anfang an. Es gibt eine weitere INSTR VBA-Funktion (steht für 'In String' ), die ebenfalls nach einem String in einem anderen String sucht und die Position zurückgibt. Diese Funktion startet die Suche jedoch am Anfang des Strings, von dem aus wir nach durchsuchbaren Strings suchen.

INSTRREV und INSTR sind beide integrierte String / Text-VBA-Funktionen von MS Excel. Wir können sie beim Schreiben eines beliebigen Makros in Microsoft Visual Basic Editor verwenden.

Syntax

Wie wir im obigen Bild sehen können, gibt es 2 obligatorische und 2 optionale Argumente.

  • StringCheck As String: Dies ist das erforderliche Argument. Wir müssen den gesuchten String-Ausdruck angeben.
  • StringMatch As String: Dieses Argument ist ebenfalls erforderlich. Wir müssen den Zeichenfolgenausdruck angeben, nach dem gesucht wird.
  • Start As Long = -1: Dies ist ein optionales Argument. Wir geben den numerischen Ausdruck an. Standardmäßig wird -1 verwendet, was bedeutet, dass die Suche an der letzten Zeichenposition beginnt. Wenn wir einen positiven Wert wie 80 angeben, beginnt die Suche am Ende der Zeichenfolge in den 80 Zeichen von links.
  • Vergleichen als VbCompareMethod = vbBinaryCompare As Long: Dieses Argument ist optional.

Wir können die folgenden Werte für dieses Argument angeben.

Rückgabewerte

  1. Die Funktion INSTRREV gibt 0 zurück, wenn die Zeichenfolgenprüfung eine Länge von Null hat oder keine Zeichenfolgenübereinstimmung gefunden wurde oder das Argument 'start' > Länge der Zeichenfolgenübereinstimmung .
  2. Diese Funktion gibt ‚Null‘ , wenn ein String - Check oder String Match ist ‚Null‘.
  3. Wenn die Zeichenfolgenübereinstimmung die Länge Null hat, kehrt die Funktion zum Start zurück .
  4. Wenn ein String - Match in einem String Prüfung gefunden wird , dann gibt die Funktion die Position , an der die Übereinstimmung gefunden wird.

Wie verwende ich die VBA INSTRREV Funktion?

Angenommen, wir haben Daten für Filmnamen und deren Regisseure. Wir wollen die Namen der Regisseure aufteilen.

Wir haben Daten in 1201 Zeilen. Wenn wir diese Aufgabe manuell ausführen, wird dies viel Zeit in Anspruch nehmen.

Um dasselbe zu tun, verwenden wir den VBA-Code. Schritte sind:

  • Wir müssen auf den Befehl 'Visual Basic' klicken, der in der Gruppe 'Code' auf der Registerkarte 'Entwickler' verfügbar ist , oder wir können Alt + F11 drücken , um den Visual Basic-Editor zu öffnen.
  • Wir werden ein Modul über das Menü 'Einfügen' einfügen .
  • Wir werden eine Unterroutine mit dem Namen 'SplittingNames' erstellen .
  • Wir benötigen 6 Variablen - eine zum Speichern der Werte der Zellen, die wir manipulieren werden. Zweitens zum Speichern der Position des ersten Leerzeichens in der Zeichenfolge, drittens zum Speichern der Position des letzten Leerzeichens in der Zeichenfolge, viertens zum Speichern der letzten Zeilennummer, fünftens und sechsten für Zeile und Spalte, mit denen die Werte nebeneinander gedruckt werden Zellen.
  • Um die zuletzt verwendete Zeile im Blatt herauszufinden, müssen wir den folgenden Code verwenden.

Dieser Code wählt zuerst die Zelle B1 und dann die zuletzt verwendete Zelle in derselben Spalte aus. Anschließend weisen wir der Variablen 'LastRow' die Zeilennummer der Zelle zu.

  • Um nun alle Zellen in der B-Spalte zu bearbeiten, führen wir eine 'for'-Schleife aus .
  • Wir werden den Wert der Zellen der Spalte B von Zeile 2 bis Zeile 1201 einzeln in der Variablen 's' speichern, um sie zu bearbeiten.
  • Wir müssen den Wert der einzustellen Variable ‚Spalte‘ bis 3 , wie wir die Split Namen in C (3 schreiben müssen rd Spalte) und eine Spalte weiter.
  • Wenn die Zeichenfolge nur ein Wort ist, was bedeutet, dass in der Zeichenfolge kein Leerzeichen vorhanden ist, möchten wir die Zeichenfolge selbst als Ausgabe. Zu diesem Zweck geben wir die Bedingung mit 'If and Else-Anweisung' mit einem Sternchen (das ein oder mehrere Zeichen angibt) wie folgt an:
  • Wenn in der Zeichenfolge Platz ist, möchten wir die Zeichenfolge teilen. Um dasselbe zu tun, haben wir sowohl die INSTR- als auch die INSTRREV- Funktion verwendet, um die erste Raumposition bzw. die letzte Raumposition herauszufinden. Es wird uns helfen, das erste und das letzte Wort in der Zeichenfolge zu finden.

Die INSTR-Funktion verwendet das folgende Argument:

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"). Wählen Sie Selection.End (xlDown) .Select LastRow = ActiveCell. Zeile für Zeile = 2 bis letzte Zeile s = Sheet1.Cells (Zeile, 2) .Wert Spalte = 3 Wenn s wie "* *" ist, dann ist FirstSpace = InStr (1, s, "") LastSPace = InStrRev (s, "") Sheet1.Cells (Zeile, Spalte) .Value = Left (s, LastSPace - 1) Sheet1.Cells (Zeile, Spalte + 1) .Value = Right (s, Len (s) - FirstSpace) Sonst Sheet1.Cells (Row, Spalte) .Value = s End If Next End Sub

Wir haben jetzt ein Ergebnis.

Interessante Beiträge...