Inhaltsverzeichnis
Umsetzung von VBA ist die effektivste, schnellste und sicherste Methode, um eine beliebige Operation in Excel auszuführen. In diesem Artikel zeigen wir Ihnen, wie Sie in Excel prüfen können, ob eine Zeichenfolge eine andere Zeichenfolge enthält, indem Sie VBA .
Download Praxisvorlage
Sie können die kostenlose Excel-Vorlage für die Praxis hier herunterladen.
VBA, um zu prüfen, ob eine Zeichenfolge einen Wert enthält.xlsm
6 Methoden in VBA, um zu prüfen, ob eine Zeichenfolge eine andere Zeichenfolge in Excel enthält
In diesem Abschnitt finden Sie 6 wirksame Methoden, wie Sie VBA um zu prüfen, ob eine Zeichenfolge eine andere Zeichenfolge enthält oder nicht.
1) VBA prüft, ob die Zeichenkette eine Teilzeichenkette enthält
Nachstehend ein Beispiel für die Funktion InStr um festzustellen, ob eine Zeichenfolge in Excel eine Teilzeichenkette enthält.
Schritte:
- 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 .
- Kopieren Sie im Codefenster den folgenden Code und fügen Sie ihn ein.
Public Sub ContainSub() If InStr("Film: Iron Man, Batman, Superman, Spiderman, Thor", "Hulk")> 0 Then MsgBox "Film gefunden" Else MsgBox "Film nicht 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, andernfalls wird keine Übereinstimmung gefunden.
In unserem Beispiel wollten wir herausfinden, ob unsere primäre Zeichenkette " Film: Iron Man, Batman, Superman, Spiderman, Thor " enthält das Wort " Hulk "Da dies nicht der Fall ist, erhalten wir eine Film nicht gefunden Ergebnis.
2) VBA prüft, ob String eine Zahl enthält
Sie können suchen, ob Zeichenketten Zahlen enthalten oder nicht, indem Sie die VBA Code.
Schauen Sie sich das folgende Beispiel an, in dem wir herausfinden wollen, welche Zeichenketten Zahlen mit den Filmnamen enthalten.
Schritte zur Prüfung, ob Strings Zahlen enthalten mit VBA sind unten aufgeführt.
Schritte:
- 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.
Function SearchNumbers(oRng As Range) As Boolean Dim bSearchNumbers As Boolean, i As Long bSearchNumbers = False For i = 1 To Len(oRng.Text) If IsNumeric(Mid(oRng.Text, i, 1)) Then bSearchNumbers = True Exit For End If Next SearchNumbers = bSearchNumbers End Function
- Es handelt sich nicht um ein Unterverfahren für die VBA Programm auszuführen, wird dadurch ein Benutzerdefinierte Funktion (UDF), die wir in unserem Arbeitsblatt aufrufen werden, um die Aufgabe auszuführen. Nachdem wir also den Code geschrieben haben, klicken wir statt auf die Schaltfläche ausführen. klicken Sie auf die Schaltfläche Speichern Sie in der Menüleiste, um die Makrodatei zu speichern.
- Gehen Sie nun zurück zu dem Arbeitsblatt, das Sie interessiert, und schreiben Sie die benutzerdefinierte Funktion, die Sie gerade erstellt haben, in das Feld VBA Code ( SucheNummer in der ersten Zeile des Codes) und geben Sie innerhalb der Klammern der Funktion die Zellreferenznummer der Zelle der Zeichenfolge ein, die führende Zahlen hat (z. B. Zelle B5 ).
- Presse Eingabe .
Sie erhalten einen booleschen Wert ( WAHR oder Falsch ), wenn die Zeichenfolge in der Zelle Zahlen enthält, erhalten Sie WAHR sonst FALSCH .
- Ziehen Sie die Zelle nach unten um Füllen Griff um die Formel auf den Rest der Zellen anzuwenden und zu prüfen, welche Zeichenfolge Zahlen enthält und welche nicht.
3) VBA zum Extrahieren von Zahlen aus einer Zeichenkette
Im obigen Abschnitt haben wir gelernt, wie man prüft, ob die Zeichenkette Zahlen enthält oder nicht, und in diesem Abschnitt werden wir lernen, wie man diese Zahlen extrahiert und in eine andere Zelle einfügt (siehe Beispiel unten).
Schritte zum Prüfen, ob Strings Zahlen enthalten, und zum Extrahieren dieser Zahlen mit VBA sind unten aufgeführt.
Schritte:
- Öffnen Sie Visual Basic-Editor von der Entwickler Registerkarte und einfügen. a UserForm dieses Mal auf der Registerkarte Einfügen im Codefenster.
- Von der erschienenen Werkzeugkasten , Ziehen und Ablegen CommandButton im UserForm .
- Doppelklick auf die Schaltfläche, kopieren Sie den folgenden Code und fügen Sie ihn ein.
Private Sub CommandButton1_Click() Worksheets("Zahl").Range("C2:C15").ClearContents checkNumber (Worksheets("Zahl").Range("B2:B15")) End Sub checkNumber(objRange As Range) Dim myAccessary As Variant Dim i As Long Dim iRow As Long iRow = 2 For Each myAccessary In objRange For i = 1 To Len(myAccessary.Value) If IsNumeric(Mid(myAccessary.Value, i,1)) Then If Trim(objRange.Cells(objRange.Row - 1, 2)) "" Then objRange.Cells(iRow - 1, 2) = _ objRange.Cells(iRow - 1, 2) & Mid(myAccessary.Text, i, 1) Else objRange.Cells(iRow - 1, 2) = Mid(myAccessary.Text, i, 1) End If End If Next iRow = iRow + 1Next myAccessary End Sub
- ausführen. den Code und Sie gelangen zum gewünschten Arbeitsblatt.
- Klicken Sie auf die Schaltfläche Befehl und Sie erhalten die extrahierte Zahl aus den Zeichenketten.
4 VBA prüft, ob die Zeichenfolge einen bestimmten Buchstaben enthält
Diese Methode ist der Methode zur Überprüfung von Teilstrings in einer Zeichenkette sehr ähnlich.
Nachstehend finden Sie die InStr Funktion, um herauszufinden, ob eine Zeichenfolge in Excel einen bestimmten Buchstaben enthält.
Schritte:
- 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 ContainChar() If InStr("Film: Iron Man, Batman, Superman, Spiderman, Thor", "Z")> 0 Then MsgBox "Buchstabe gefunden" Else MsgBox "Buchstabe nicht gefunden" End If End Sub
Ihr Code ist nun einsatzbereit.
- ausführen. Das Programm: Wenn Ihr String enthält den Buchstaben dann erhalten Sie eine Übereinstimmung gefunden, andernfalls wird keine Übereinstimmung gefunden.
In unserem Beispiel wollten wir herausfinden, ob unsere primäre Zeichenkette " Film: Iron Man, Batman, Superman, Spiderman, Thor " enthält den Buchstaben " Z "Da dies nicht der Fall ist, erhalten wir eine Brief nicht gefunden Ergebnis.
5 VBA prüft, ob ein Zeichenfolgenbereich eine andere Zeichenfolge enthält
Wir haben gelernt, wie man überprüft, ob eine gegebene Zeichenkette eine andere Zeichenkette enthält oder nicht. In diesem Abschnitt werden wir jedoch lernen, wie man überprüft, ob ein Bereich von Zeichenketten eine Teilzeichenkette enthält oder nicht, und zwar anhand des folgenden Datensatzes.
Schritte:
- Ö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 ContainsSub() If InStr(ActiveSheet.Select, "Hulk")> 0 Then MsgBox "Film gefunden" Else MsgBox "Film nicht gefunden" End If End Sub
Ihr Code ist nun einsatzbereit.
- ausführen. den Code.
Wenn Ihr Angebot an String enthält die Teilzeichenkette dann erhalten Sie eine Übereinstimmung gefunden, andernfalls wird keine Übereinstimmung gefunden.
6) VBA zum Extrahieren von Strings aus String
In diesem Abschnitt werden wir sehen, wie man prüft, ob Zeichenketten bestimmte Teilzeichenfolgen enthalten, und diese in eine andere Zelle extrahiert.
Wir werden die Informationen der Namen extrahieren, die mit " Chris " aus dem folgenden Datensatz.
Schritte :
- Ö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.
Sub SearchSub() Dim lastrow As Long Dim i As Integer, count As Integer lastrow = ActiveSheet.Range("A30000").End(xlUp).Row For i = 1 To lastrow If InStr(1, LCase(Range("C" & i)), "Chris") 0 Then count = count + 1 Range("F" & count & ":H" & count) = Range("B" & i & ":D" & i).Value End If Next i End Sub
Ihr Code ist nun einsatzbereit.
- ausführen. den Code.
Nur die Namen, die mit " Chris " werden in den vordefinierten Zellen gespeichert.