Wie man mit VBA in Excel eine Zeichenfolge findet (8 Beispiele)

  • Teile Das
Hugh West

Umsetzung von VBA ist die effektivste, schnellste und sicherste Methode, um eine Operation in Excel auszuführen. In diesem Artikel zeigen wir Ihnen, wie Sie bestimmte Zeichenfolgen in einer anderen Zeichenfolge mit VBA in Excel.

Download Praxisvorlage

Sie können die kostenlose Excel-Vorlage für die Praxis hier herunterladen.

VBA zum Suchen in String.xlsm

InStr Funktion

Microsoft Excel verfügt über eine integrierte Funktion namens die Funktion InStr um die Position bestimmter Zeichenfolgen in einer gegebenen Zeichenfolge zu finden.

Generische Syntax:

InStr([start], string1, string2, [compare])

Hier,

Argumente Erforderlich/ Fakultativ Definition
Start Optional Startposition der Suche.
  • Standardmäßig wird die InStr Die Funktion berechnet die Zeichenposition, indem sie von 1 an zählt, nicht von der Startposition aus. Sie können dieses Feld also leer lassen, wenn Sie wollen.
string1 Erforderlich Die Zeichenfolge, in der gesucht werden soll, Primary String.
string2 Erforderlich Die Zeichenfolge, nach der in der primären Zeichenfolge gesucht werden soll.
vergleichen Optional Die InStr unterscheidet standardmäßig zwischen Groß- und Kleinschreibung, aber wenn Sie die Groß- und Kleinschreibung nicht berücksichtigen wollen, können Sie die Funktion InStr können Sie hier das Argument übergeben, um einen bestimmten Vergleich durchzuführen. Dieses Argument kann die folgenden Werte annehmen,
  • vbBinaryCompare -> führt einen Binärvergleich durch, Rückgabewert 0
  • vbTextCompare -> führt einen Textvergleich durch, Rückgabewert 1
  • vbDatabaseCompare -> führt einen Datenbankvergleich durch, Rückgabewert 2

Standardmäßig, InStr nimmt vbBinaryCompare als Vergleichsargument.

8 einfache Beispiele für die Suche nach einer bestimmten Position in einer gegebenen Zeichenkette mit VBA

Sehen wir uns einige einfache Beispiele an, um die Positionen bestimmter Zeichenfolgen in einer gegebenen Zeichenkette zu ermitteln, indem wir VBA .

1 VBA, um die Position eines Textes in einem String zu finden

Nachstehend ein Beispiel für InStr um die Position eines Textes in einer Zeichenkette zu finden.

  • Presse Alt + F11 auf Ihrer Tastatur oder gehen Sie auf die Registerkarte Entwickler -> Visual Basic zu öffnen Visual Basic-Editor .

  • Klicken Sie im Pop-up-Code-Fenster in der Menüleiste auf Einfügen -> Modul .

  • Schreiben Sie nun im Codefenster eine einfache InStr Programm innerhalb einer VBA-Unterverfahren (siehe unten).
 Sub INSTR_Example() MsgBox InStr("Glück ist eine Wahl", "Wahl") End Sub 

Ihr Code ist nun einsatzbereit.

  • Presse F5 auf Ihrer Tastatur oder wählen Sie in der Menüleiste Run -> Run Sub/UserForm Sie können auch einfach auf die Schaltfläche kleines Play-Symbol in der Untermenüleiste, um das Makro auszuführen.

Sie werden sehen, dass das Pop-up-Fenster Ihnen eine Nummer, die die Position angibt des Textes, den Sie überprüfen möchten.

Erläuterung:

Unsere Hauptzeichenkette, " Glücklichsein ist eine Entscheidung " ist ein Satz mit 21 Buchstaben (mit Leerzeichen) und wir wollten die Position des Textes " Auswahl "In dieser Zeichenfolge ist der Text " Auswahl " beginnt an der 16. Position der primären Zeichenkette, daher erhalten wir die Nummer 16 als unsere Ausgabe im Nachrichtenfeld.

2 VBA zum Suchen von Text an einer bestimmten Position in einer Zeichenkette

Nun wollen wir herausfinden, was passieren würde, wenn wir die Position von einer bestimmten Zahl aus ermitteln wollten.

  • Auf die gleiche Weise wie zuvor, öffnen Sie Visual Basic-Editor von der Entwickler Registerkarte und einfügen. a Modul im Code-Fenster.
  • Schreiben Sie im Codefenster eine einfache InStr Programm und übergeben Sie den Wert im Startargument entsprechend der Position, ab der Sie Ihren Text zählen wollen.
 Sub INSTR_Example() MsgBox InStr(17, "Glück ist eine Wahl", "Wahl") End Sub 

  • Nächste, ausführen. den Code.

Sie werden sehen, dass das Pop-up-Fenster Ihnen eine Nummer, die die Position angibt des Textes ausgehend von einer bestimmten Position die Sie überprüfen wollten.

Erläuterung:

Da wir bereits wussten (aus der Diskussion in Phase 1), dass der Text " Auswahl " startete von der Position des 16 also haben wir zwei " Auswahl " in der primären Zeichenfolge und setzen 17 als unseren 1. Parameter, um den ersten "" zu überspringen. Auswahl "Also, wir ausführen. das obige Makro und es zeigte uns die Positionsnummer 27 was genau der Positionsnummer des zweite " Auswahl " in der angegebenen Zeichenkette.

3 VBA zum Suchen von Text mit der case-insensitive InStr-Funktion in String

Seit der Einführung des InStr Funktion wissen Sie bereits, dass standardmäßig die InStr Funktion unterscheidet zwischen Groß- und Kleinschreibung, was wir anhand eines Beispiels herausfinden wollen.

Siehe das Folgende VBA Code, in dem wir die Position des Wortes "" finden wollten Auswahl " mit einer großes "C" in der Zeichenfolge " Glücklichsein ist eine Entscheidung ", wobei die Auswahl mit einem kleines "c" .

  • ausführen. den Code und finden 0 als unsere Ausgabe.

Das liegt daran, dass die InStr Funktion behandelt großes "C" und kleines "c" Es wurde also nach dem Wort "" gesucht. Auswahl " in der Zeichenkette und erhielt keinen Treffer, also gab er 0 .

  • Um die InStr Funktion Groß- und Kleinschreibung wird nicht berücksichtigt setzen Sie das Argument compare auf vbTextCompare (siehe unten).
 Sub INSTR_Example() MsgBox InStr(1, "Glück ist eine Wahl und Wahl", "Wahl", vbTextCompare) End Sub 

  • ausführen. den Code.

Sie erhalten die Position des Textes aus der Zeichenkette, ob der Text in Großbuchstaben oder Kleinbuchstaben .

4 VBA zum Suchen von Text auf der rechten Seite einer Zeichenfolge

Bis jetzt hat die InStr Funktion gab uns nur die Position auf der linken Seite der Zeichenkette an. Was aber, wenn Sie die Textposition auf der rechten Seite der Zeichenkette finden wollen?

Die Funktion InStrRev sucht von rechts. die InStrRev Funktion funktioniert sehr ähnlich wie die InStr Funktion und findet die Position eines Textes aus der rechte Seite der Zeichenkette.

Anhand der folgenden Beispiele können Sie den Unterschied erkennen.

  • Wenn wir den folgenden Code mit der Option InStr Funktion,

gibt es die Position ( 16 ) des ersten Textes " Auswahl ".

  • Aber wenn wir den gleichen Code mit der InStrRev Dann Funktion,

gibt es die Position ( 27 ) des letzten Textes " Auswahl ".

Ähnliche Lektüre:

  • FindNext mit VBA in Excel (2 Beispiele)
  • Suchen und Ersetzen mit VBA (11 Möglichkeiten)
  • Exakte Übereinstimmung mit VBA in Excel finden (5 Möglichkeiten)

5 VBA zum Finden der Position eines Zeichens in einer Zeichenkette

Sie können auch die Position eines bestimmten Zeichens in einer Zeichenkette auf dieselbe Weise ermitteln wie den Text.

  • Kopieren Sie den folgenden Code in Ihr VBA Code-Fenster
 Sub Find_Character() Dim z As Long z = InStr("Happiness is a choice", "e") MsgBox z End Sub 

  • Und ausführen. das Makro.

Die erste " e " in unserer gegebenen Zeichenkette ist an der Nummer 7 Position.

6 VBA zum Suchen von Teilstrings in einer Zeichenkette

Hier werden wir lernen, wie man herausfindet, ob eine Zeichenkette ein Teilstring oder nicht.

Um das zu erhalten, müssen wir eine IF-Anweisung in unserem Code.

  • Auf die gleiche Weise wie zuvor, öffnen Sie Visual Basic-Editor von der Entwickler Registerkarte und einfügen. a Modul im Code-Fenster.
  • Kopieren Sie im Codefenster den folgenden Code und fügen Sie ihn ein.
 Public Sub FindSub() If InStr("Glück ist eine Wahl", "Wahl") = 0 Then MsgBox "Keine Übereinstimmung gefunden" Else MsgBox "Übereinstimmung gefunden" End If End Sub 

Ihr Code ist nun einsatzbereit.

  • ausführen. das Makro.

Wenn Ihr String enthält die Teilzeichenkette dann erhalten Sie eine Übereinstimmung gefunden In unserem Beispiel wollten wir herausfinden, ob unsere primäre Zeichenkette " Glücklichsein ist eine Entscheidung " enthält das Wort " Auswahl "Wenn dies der Fall ist, erhalten wir eine Übereinstimmung gefunden Ergebnis.

7 VBA zum Suchen von Zeichenfolgen in einem Zellbereich

Sie können nach einem bestimmten Text in einem Zellbereich suchen und eine bestimmte Zeichenfolge zurückgeben.

In dem folgenden Beispiel finden wir " Dr. "und wenn es eine Übereinstimmung gibt, gibt es " Doktor ".

  • Im Folgenden finden Sie den Code, um das oben beschriebene Ergebnis zu erhalten,
 Sub Find_String_in_Range() Dim cell As Range For Each cell In Range("B5:B10") If InStr(cell.Value, "Dr.")> 0 Then cell.Offset(0, 1).Value = "Doctor" End If Next cell End Sub 

  • ausführen. den Code und das Ergebnis ist unten dargestellt

  • Sie können das Makro nach Ihren Bedürfnissen abändern, wenn Sie zum Beispiel nach " Prof. " in einer beliebigen Zelle der Zeichenkette und erhalten " Professor " als Rückgabewert, dann übergeben Sie einfach " Prof. " als Wert anstelle von " Dr. ." in der 4. Zeile des Makros und " Professor " anstelle von " Doktor " in der 5. Zeile des Makros und definieren Sie die Zellbereichsnummer entsprechend.

8 VBA zum Suchen von Zeichenfolgen in einer Zelle

Sie können auch Suche nach einem bestimmten Text in einer einzelnen Zelle einer Zeichenkette und eine bestimmte Zeichenkette zurückgeben.

  • Kopieren Sie den folgenden Code und fügen Sie ihn in das Codefenster ein.
 Sub Find_String_in_Cell() If InStr(Range("B5").Value, "Dr.")> 0 Then Range("C5").Value = "Doktor" End If End Sub 

Es wird nach " Dr. " in Zelle B5 und gibt, wenn er die Übereinstimmung findet, " Doktor " in Zelle C5 .

  • Sie können das Makro nach Ihren Bedürfnissen abändern, wenn Sie zum Beispiel nach " Prof. " in einer beliebigen Zelle der Zeichenkette und erhalten " Professor " als Rückgabe, dann übergeben Sie einfach " Prof. " als Wert anstelle von " Dr. ." in der 2. Zeile des Makros und " Professor " anstelle von " Doktor " in der 3. Zeile des Makros und definieren Sie die Zellreferenznummer entsprechend.

Schlussfolgerung

In diesem Artikel wurde gezeigt, wie man in Excel bestimmte Texte in einer Zeichenkette findet, indem man VBA-Makro. Ich hoffe, dass dieser Artikel für Sie von Nutzen war, und stehe Ihnen für Fragen zum Thema gerne zur Verfügung.

Hugh West ist ein äußerst erfahrener Excel-Trainer und -Analyst mit über 10 Jahren Erfahrung in der Branche. Er verfügt über einen Bachelor-Abschluss in Rechnungswesen und Finanzen sowie einen Master-Abschluss in Betriebswirtschaft. Hugh hat eine Leidenschaft für das Unterrichten und hat einen einzigartigen Lehransatz entwickelt, der leicht zu befolgen und zu verstehen ist. Seine Expertenkenntnisse in Excel haben Tausenden von Studenten und Berufstätigen auf der ganzen Welt geholfen, ihre Fähigkeiten zu verbessern und in ihrer Karriere herausragende Leistungen zu erbringen. Über seinen Blog teilt Hugh sein Wissen mit der Welt und bietet kostenlose Excel-Tutorials und Online-Schulungen an, um Einzelpersonen und Unternehmen dabei zu helfen, ihr volles Potenzial auszuschöpfen.