Verwenden Sie reguläre Ausdrücke in Excel VBA

Bilal Shahid 21 Juni 2023
  1. Reguläre Ausdrücke in Microsoft Excel
  2. Beispiele für reguläre Ausdrücke in Excel VBA
  3. Abschluss
Verwenden Sie reguläre Ausdrücke in Excel VBA

Visual Basic for Applications ist eine ereignisgesteuerte Programmiersprache, die für Microsoft-Anwendungen verwendet wird. Es ermöglicht Benutzern, Aufgaben zu automatisieren und mehrere Funktionalitäten entsprechend ihren Anforderungen neu zu schreiben.

VBA ermöglicht es dem Benutzer, mehrere Aufgaben mit Hilfe einiger Codeanweisungen auszuführen, die in Form eines Makros gespeichert sind. Das Makro ermöglicht es dem Benutzer, den Code immer wieder zu verwenden.

Reguläre Ausdrücke in Microsoft Excel

Microsoft Excel ist eine leistungsstarke Anwendung, die eine Datenmanipulation in großem Umfang ermöglicht. Mit Hilfe von Microsoft Excel ist es ganz einfach, Eingaben aus einer Datenbank zu entnehmen, die Daten zu manipulieren und die Ergebnisse zusammenzufassen.

Reguläre Ausdrücke (Regex) werden verwendet, um ein Muster innerhalb einer Zeichenfolge zu identifizieren und abzugleichen. Mit regulären Ausdrücken in Microsoft Excel können Sie Daten weitgehend manipulieren.

Beispielsweise können Sie die Dateneingabe nach Geschlecht aufteilen. Darüber hinaus können Sie auch überprüfen, ob Benutzer die richtige E-Mail-Adresse eingegeben haben oder nicht.

Kurz gesagt, es ist ziemlich einfach, formatierte Daten zu überprüfen und entsprechende Operationen auszuführen.

Erlauben Sie die Verwendung von regulären Ausdrücken in Excel

Um reguläre Ausdrücke in Microsoft Excel verwenden zu können, muss zwingend eine VBA-Referenz zu "Microsoft VBScript Regular Expressions 5.5" hinzugefügt werden. Dies kann mit den folgenden Schritten erfolgen:

  • Wählen Sie in Excel die Registerkarte Entwickler
  • Wählen Sie das Icon Visual Basic aus dem Ribbon-Abschnitt Code
  • Wählen Sie im oberen Menü des Fensters Microsoft Visual Basic for Applications Tools
  • Wählen Sie Referenzen
  • Prüfen Sie Microsoft VBScript Reguläre Ausdrücke 5.5

Mit diesen Schritten können Sie reguläre Ausdrücke im VBA-Code verwenden.

Schreiben Sie einen regulären Ausdruck

Im Folgenden wurden einige grundlegende Definitionen genannt, die Ihnen helfen, einen regulären Ausdruck zu formulieren.

  1. Erwähnen Sie einen Bereich

    Das Symbol - wird verwendet, um einen Bereich zu definieren. Beispielsweise entspricht das a-z einer Zeichenfolge mit Kleinbuchstaben.

  2. Passen Sie ein Objekt an

    Die eckigen Klammern [] werden verwendet, um genau einem der in den Klammern genannten Objekte zu entsprechen. Zum Beispiel entspricht das [wxyz] einem einzelnen Buchstaben: w, x, y oder z.

  3. Passen Sie ein oder kein Vorkommen eines Musters an

    Ein Fragezeichen ? stimmt null oder einmal mit dem in den eckigen Klammern definierten Muster überein. Das [0-9]? Übereinstimmungen mit einer leeren Zeichenfolge oder einer beliebigen Ziffer.

  4. Übereinstimmung mit null oder mehr Vorkommen eines Musters

    Ein Sternchen * stimmt mit dem in den eckigen Klammern definierten Muster nicht oder mehrmals überein. [0-9]* stimmt mit einer leeren Zeichenfolge oder einer beliebigen Ziffernfolge überein.

  5. Übereinstimmung mit einem oder mehreren Vorkommen eines Musters

    Ein Pluszeichen + stimmt einmal oder mehrmals mit dem in den eckigen Klammern definierten Muster überein. Das [0-9]+ stimmt mit mindestens einer oder mehreren Ziffern überein.

  6. Vielfalt eines Musters

    Damit sich ein Muster mehrmals wiederholen kann, werden die geschweiften Klammern {} verwendet. Zum Beispiel:

    6.1. Das [x]{2} entspricht zwei aufeinanderfolgenden Kleinbuchstaben x. Es passt zu xx.

    6.2. Das [x]{1, 3} stimmt mindestens 1 bis maximal 3 mal mit dem in den eckigen Klammern definierten Muster überein. Es passt zu x, xx und xxx.

  7. Der ODER-Operator

    Der ODER-Operator | ermöglicht es Ihnen, zwischen mehreren Optionen abzugleichen. Beispielsweise stimmt das x|y|z mit genau einer der Optionen überein.

  8. Der NOT-Operator

    Der NOT-Operator ^ stimmt nicht mit dem in eckigen Klammern definierten Muster überein. Zum Beispiel stimmt das [^a-z] mit keinem Kleinbuchstaben überein.

  9. Gruppieren Sie verschiedene Übereinstimmungen

    Die Klammer () wird verwendet, um die verschiedenen Übereinstimmungsmuster zu gruppieren. Zum Beispiel entspricht das (^[0-9]{3})([a-z]) dem Muster, das am Anfang drei Ziffern hat, gefolgt von einem Kleinbuchstaben.

  10. Verankerungsmuster

    Der Operator ^ kann verwendet werden, um den Anfang einer Zeichenfolge zu finden. Beispielsweise sorgt der Ausdruck ^a dafür, dass der String mit einem kleinen ^a beginnt.

    Der Operator $ wird verwendet, um das Ende einer Zeichenfolge abzugleichen. Beispielsweise sorgt der Ausdruck a$ dafür, dass der String mit einem kleinen a$ endet.

Vorrang in regulären Ausdrücken

Unterschiedliche Operatoren haben unterschiedliche Prioritäten, die in der folgenden Tabelle aufgeführt sind:

Befehl Name Darstellung
1 Klammern ( )
2 Multiplikatoren ? + * {m,n} {m, n}?
3 Sequenz & Anker abc ^ $
4 Wechsel |

Zeichenabkürzungen

In regulären Ausdrücken werden mehrere vordefinierte Zeichenabkürzungen verwendet. Einige der vordefinierten Zeichenabkürzungen wurden in der folgenden Tabelle erwähnt.

Abkürzung Definition
\d Zur Darstellung einer einzelnen Ziffer
\D Zur Darstellung eines Nicht-Ziffern-Zeichens
\w Zur Darstellung eines Wortzeichens
\W Zur Darstellung eines Nicht-Wort-Zeichens
\s Zur Darstellung eines Leerzeichens
\S Zur Darstellung eines Nicht-Leerzeichens
\n Um eine neue Linie darzustellen

Beispiele für reguläre Ausdrücke in Excel VBA

Überprüfen Sie in den folgenden Beispielen den Zellenwert auf einen Großbuchstaben und ersetzen Sie ihn durch eine leere Zeichenfolge. Kurz gesagt, alle Großbuchstaben werden abgeglichen und aus der Eingabezeichenfolge gelöscht.

Führen Sie den Code als Makro aus

Der folgende Code nimmt A1 als Zellbezug und löscht alle Großbuchstaben aus dem auf A1 platzierten String. Das Ergebnis wird in einer Msgbox angezeigt.

Beispielsweise ändert sich die Eingabezeichenfolge aAbBcC im Meldungsfeld zu abc.

Private Sub test()
    Dim pattern As String: pattern = "[A-Z]"
    Dim replace As String: replace = ""
    Dim exp As New RegExp
    Dim cellVal As String
    Dim rangeref As Range

    Set rangeref = ActiveSheet.Range("A1")

    If pattern <> "" Then
        cellVal = rangeref.Value

        With exp
            .Global = True
            .MultiLine = True
            .IgnoreCase = False
            .pattern = pattern
        End With

        If exp.test(cellVal) Then
            MsgBox (exp.replace(cellVal, replace))
        Else
            MsgBox ("Not matched")
        End If

    End If
End Sub

Schleife durch einen Bereich

Derselbe Code, der im ersten Beispiel verwendet wurde, kann geändert werden, indem eine For-Schleife hinzugefügt wird, um das Makro über einen bestimmten Bereich auszuführen. Die Schleife wird für jede Zelle innerhalb des definierten Bereichs ausgeführt und zeigt die Ausgabe jeder Zelle in einem Meldungsfeld an.

Private Sub test()
    Dim pattern As String: pattern = "[A-Z]"
    Dim replace As String: replace = ""
    Dim exp As New RegExp
    Dim cellVal As String
    Dim rangeref As Range

    Set rangeref = ActiveSheet.Range("A1:A5")

    For Each cell In rangeref
        If pattern <> "" Then
            cellVal = cell.Value

            With exp
                .Global = True
                .MultiLine = True
                .IgnoreCase = False
                .pattern = pattern
            End With

            If exp.test(cellVal) Then
                MsgBox (exp.replace(cellVal, replace))
            Else
                MsgBox ("Not matched")
            End If

        End If
    Next
End Sub

Erstellen Sie eine Funktion

Der folgende Code kann verwendet werden, um eine In-Cell-Funktion zu erstellen, die Vorkommen von Großbuchstaben in der Zeichenfolge löscht. Der Code ähnelt dem im ersten Beispiel verwendeten.

Es wurden einige Änderungen vorgenommen, um es in eine Funktion umzuwandeln.

Function cellTest(rangeref As Range) As String
    Dim pattern As String: pattern = "[A-Z]"
    Dim replace As String: replace = ""
    Dim exp As New RegExp
    Dim cellVal As String


    If pattern <> "" Then
        cellVal = rangeref.Value

        With exp
            .Global = True
            .MultiLine = True
            .IgnoreCase = False
            .pattern = pattern
        End With

        If exp.test(cellVal) Then
            cellTest = exp.replace(cellVal, replace)
        Else
            cellTest = "Not matched"
        End If

    End If
End Function

Wenn Sie cellTest(A1) verwenden, wobei A1 DdEeleTte enthält, gibt die Funktion delete zurück.

Abschluss

Die Anzahl der generierbaren regulären Ausdrücke ist unbegrenzt. Sobald Sie ein allgemeines Format identifizieren können, das Sie benötigen, erstellen Sie einen regulären Ausdruck dafür und testen Sie alle darauf basierenden Zeichenfolgen.

Dies kann Ihnen helfen, Ihre Daten basierend auf verschiedenen Merkmalen aufzuteilen.

Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub