Können Sie reguläre Ausdrücke in Excel ohne VBScript ausführen?


22

Ich suche nach einer Excel-Funktion, die ich in eine Zelle einfügen kann, um eine reguläre Suche des Inhalts einer anderen Zelle durchzuführen. Gibt es dafür etwas? Ich würde es vorziehen, nicht VB Script zur Tabelle hinzufügen zu müssen, da ich eine Lösung schneller fest programmieren kann. Es ist nur so, dass die schnellste Lösung eine Funktion wäre. Ich kann aber keinen finden. Vielleicht gibt es nichts.

Weiß jemand?

Antworten:


12

Sie können einfach einen Verweis auf "Microsoft VBScript Regular Expressions 5.5" in der VBE hinzufügen, um die Regex-Funktionen von VBScript.dll für Excel verfügbar zu machen. Das Schreiben einer einfachen Regex-Funktion ist dann trivial, z

Public Function emailCheck(rawEmail As String) As Boolean
    Dim reg As New RegExp
    reg.Pattern = "^[\w-\.]{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]{2,4}$"
    emailCheck = False
    If reg.Test(rawEmail) Then
        emailCheck = True
    End If
End Function

Können Sie erklären, wie Sie eine Referenz hinzufügen?
Chris Walsh


3

MoreFunc.xll ist ein kostenloses Add-In mit Regex-Funktionalität.

Es gibt einige andere Add-Ins von Drittanbietern, die auch Regex ausführen können.

Es gibt keine echten nativen Arbeitsblattfunktionen, aber wenn Sie eine bestimmte Suche durchführen müssen, können Sie wahrscheinlich andere Funktionen verwenden, um die Arbeit zu erledigen.


Danke für die Bestätigung. Ich habe diese Bibliothek gefunden, aber wir hatten gehofft, etwas zu haben, das uns nicht zwang, auch eine Bibliothek zu verteilen.
Erick Robertson

@Erick, yep, ich hasse es, meinen Tabellen Add-Ins hinzuzufügen, ein großer Schmerz, sie im Auge zu behalten. Wenn Sie keine vollständige Flexibilität für reguläre Ausdrücke benötigen, können Sie die Arbeit wahrscheinlich mit anderen Funktionen erledigen. Es gibt viele Tricks in Excel. Veröffentlichen Sie hier spezifische Anfragen.
Lance Roberts

2

Hier ist eine Funktion, die die Anzahl der Übereinstimmungen mit regulären Ausdrücken in einer bestimmten Zelle angibt:

Public Function regexCount(regex As String, ref As Range) As Integer
    Dim reg As New RegExp
    reg.Global = True
    reg.Pattern = regex
    regexCount = reg.Execute(ref.Value).Count
End Function

(Erfordert das Hinzufügen eines Verweises auf "Microsoft VBScript Regular Expressions 5.5" - gehen Sie einfach im VBA-Editor zu "Extras" -> "Verweise" und aktivieren Sie das Kontrollkästchen für diesen Verweis.)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.