Gestern erhielt ich eine E-Mail von einem meiner Leser – Juni.
Sie wollte Sie wissen, wie Sie ein fett gedrucktes Schriftformat auf einen bestimmten Teil einer Zeichenfolge in einer Zelle anwenden. Wenden Sie beispielsweise das Fettformat nur auf das Wort „Hallo“ aus „Hallo Welt“ an.
Und sie wollte dies für Hunderte von Zellen gleichzeitig tun.
Da gibt es In Excel gibt es keine eingebaute Funktionalität, die dies kann. Ich habe ein einfaches Makro erstellt, das die Excel VBA InStr-Funktion verwendet (wie dies in Beispiel 4 in diesem Lernprogramm beschrieben wird).
Aber zuerst wollen wir sehen Funktionsweise der Excel VBA InStr-Funktion!
In diesem Lernprogramm wird Folgendes behandelt:
Excel VBA InStr-Funktion
In diesem Tutorial werde ich die Verwendung der InStr-Funktion in Excel VBA erläutern und einige praktische Beispiele sehen, in denen sie verwendet werden kann.
Excel VBA InStr-Funktion – Einführung
InStr-Funktion findet Die Position eines angegebenen Teilstrings innerhalb der Zeichenfolge und gibt die erste Position ihres Auftretens zurück.
Wenn Sie beispielsweise die Position von ‚x‘ in ‚Excel‘ mithilfe der Excel VBA InStr-Funktion ermitteln möchten würde 2 zurückgeben.
Syntax der InStr-Funktion
- – (optionales Argument) Dies ist ein ganzzahliger Wert, der der InStr-Funktion die Startposition mitteilt, von der aus sie suchen soll. Wenn ich beispielsweise möchte, dass die Suche von vorne beginnt, gebe ich den Wert als 1 ein. Wenn ich möchte, dass er mit dem dritten Zeichen beginnt, verwende ich 3. Wenn weggelassen, wird der Standardwert 1 verwendet.
- String1 – Dies ist der Hauptstring (oder der übergeordnete String), in dem Sie suchen möchten. Wenn Sie beispielsweise in Excel nach der Position von x suchen, lautet String 1 „Excel“.
- String2 – Dies ist der Teilstring, nach dem Sie suchen. Zum Beispiel, wenn Sie es sind Wenn Sie in Excel nach der Position von x suchen, wäre String2 x.
- – (optionales Argument) Sie können einen der folgenden drei Werte für das Argument angeben:
- vbBinaryCompare – Dies würde ein Zeichen ausführen Wenn Sie beispielsweise in ‚Excel‘ nach ‚x‘ suchen, wird 2 zurückgegeben. Wenn Sie in ‚Excel‘ nach ‚X‘ suchen, wird 0 zurückgegeben, da X oben steht Sie können auch 0 anstelle von vbBinaryCompare verwenden. Wenn das Argument weggelassen wird, wird dies als Standard verwendet.
- vbTextCompare – Dies würde einen Textvergleich durchführen. Wenn Sie beispielsweise nach ‚x‘ suchen. oder ‚X‘ in Excel würde in beiden Fällen 2 zurückgeben. Dieses Argument ignoriert die Groß- und Kleinschreibung. Sie können auch 1 anstelle von vbTextCompare verwenden.
- vbDatabaseCompare – Dies wird nur für Microsoft Access verwendet verwendet die Informationen in die Datenbank, um den Vergleich durchzuführen. Sie können auch 2 anstelle von vbDatabaseCompare verwenden.
Zusätzliche Hinweise zur Excel VBA InStr-Funktion:
- InStr ist ein VBA Funktion und keine Arbeitsblattfunktion. Dies bedeutet, dass Sie es nicht im Arbeitsblatt verwenden können.
- Wenn String2 (der Teilstring, dessen Position Sie suchen) leer ist, gibt die Funktion den Wert des Arguments zurück.
- Wenn die InStr-Funktion die Teilzeichenfolge in der Hauptzeichenfolge nicht finden kann, wird 0 zurückgegeben.
Schauen wir uns nun ein Beispiel für die Verwendung der Excel VBA InStr-Funktion
Beispiel 1 – Finden der Position von Anfang an
In diesem Beispiel werde ich die InStr-Funktion verwenden, um die Position von ‚V‘ in ‚Excel VBA‘ von Anfang an zu finden.
Der Code hierfür wäre:
Sub FindFromBeginning()Dim Position As IntegerPosition = InStr(1, "Excel VBA", "V", vbBinaryCompare)MsgBox PositionEnd Sub
Wenn Sie diesen Code ausführen, wird ein Meldungsfeld mit dem Wert 7 angezeigt ist die Position von ‚V‘ in der Zeichenfolge ‚Excel VBA‘.
Beispiel 2 – Ermitteln der Position ab dem Anfang des zweiten Wortes
Angenommen, ich möchte die Position ermitteln von ‚the‘ im Satz – ‚Der schnelle Braunfuchs springt über den faulen Hund‘
Ich möchte jedoch die Suche Beginnen Sie mit dem zweiten Wort.
In diesem Fall müssen wir das Argument ändern, um sicherzustellen, dass es die Position angibt, an der das zweite Wort beginnt.
Hier ist der Code, der wird dies tun:
Sub FindFromSecondWord()Dim Position As IntegerPosition = InStr(4, "The quick brown fox jumps over the lazy dog", "the", vbBinaryCompare)MsgBox PositionEnd Sub
Dieser Code zeigt das Meldungsfeld mit dem Wert 32 an, da wir die Startposition als 4 angegeben haben. Daher ignoriert er die erste ‚ Das ‚und findet das zweite‘ das ‚im Satz.
Wenn Sie es dynamischer gestalten möchten, können Sie den Code so erweitern, dass das erste Wort automatisch ignoriert wird.
Hier ist der erweiterte Code, der dies tut:
Sub FindFromSecondWord()Dim StartingPosition As IntegerDim Position As IntegerStartingPosition = InStr(1, "The quick brown fox jumps over the lazy dog", " ", vbBinaryCompare)Position = InStr(StartingPosition, "The quick brown fox jumps over the lazy dog", "the", vbBinaryCompare)MsgBox PositionEnd Sub
Dieser Code findet zuerst die Position eines Leerzeichens und speichert es in der Variablen StartingPosition. P. >
Diese Variable wird dann als Startposition verwendet, um nach dem Wort ‚the‘ zu suchen.
Daher wird 32 zurückgegeben (dies ist die Startposition von ‚the‘ nach dem ersten Wort).
Beispiel 3 – Ermitteln der Position von @ in der E-Mail-Adresse
Mit der Excel VBA InStr-Funktion können Sie ganz einfach eine benutzerdefinierte Funktion erstellen, um die Position von @ in einer E-Mail-Adresse zu ermitteln.
Hier ist der Code zum Erstellen der benutzerdefinierten Funktion:
Jetzt können Sie diese benutzerdefinierte Funktion wie jede andere Arbeitsblattfunktion verwenden. Es wird eine Zellreferenz als Eingabe verwendet und Sie erhalten die Position von @ darin.
Ebenso können Sie eine erstellen Benutzerdefinierte Funktion zum Ermitteln der Position eines Teilstrings innerhalb der Hauptzeichenfolge.
Beispiel 4 – Hervorheben eines Teils der Zeichenfolge in Zellen
Dies ist die Abfrage, die bis Juni (mein Leser) gestellt wurde der mich auch dazu inspiriert hat, dieses Tutorial zu schreiben.
Hier sind Beispieldaten im Format, die June mir gesendet hat:
Ihre Abfrage war, die Zahlen außerhalb der Klammer fett zu machen.
Hier ist der Code, den ich erstellt habe, um dies zu tun:
Der obige Code verwendet die For Each-Schleife für Gehen Sie jede der Zellen in der Auswahl durch. Es identifiziert die Position des öffnenden Klammerzeichens mithilfe der InStr-Funktion. Anschließend wird die Schriftart des Texts vor der Klammer geändert.
Um diesen Code zu verwenden, müssen Sie ein Modul im VB-Editor kopieren und einfügen.
Nach dem Einfügen kopieren Wählen Sie im Code die Zellen aus, in denen Sie diese Formatierung durchführen möchten, und führen Sie das Makro aus (siehe Abbildung unten).
Möglicherweise gefallen Ihnen auch die folgenden Excel VBA-Tutorials:
- Excel VBA SPLIT-Funktion.
- VBA TRIM-Funktion.
- Das ultimative Handbuch für Excel VBA-Schleifen .
- Ein Leitfaden für Anfänger zur Verwendung für die nächste Schleife in Excel VBA.
- Erstellen und Verwenden eines Excel-Add-Ins.
- Kombinieren mehrerer Arbeitsmappen in eine Excel-Arbeitsmappe.
- Zählen farbiger Zellen in Excel.
- Nützliche Beispiele für Excel-VBA-Makros für Anfänger.
- Sortieren von Daten in Excel mithilfe von VBA (Eine Schritt-für-Schritt-Anleitung)