Erstellen Sie im VBA-Editor ein neues Modul in Ihrer Arbeitsmappe (Sie müssen es als .xls
oder .xlsm
nicht speichern .xlsx
) und fügen Sie den Code wie folgt ein:
Function RegEx(Pattern As String, TextToSearch As String) As String 'vv Dim RE As Object, REMatches As Object Set RE = CreateObject("vbscript.regexp") With RE .MultiLine = False .Global = False .IgnoreCase = False .Pattern = Pattern End With Set REMatches = RE.Execute(TextToSearch) If REMatches.Count > 0 Then RegEx = REMatches(0) Else RegEx = vbNullString End If End Function '^^ Public Function IsGood(stir As String) If RegEx("[0-9][0-9]\.[0-9][0-9]/[0-9][0-9]\.[0-9][0-9]", stir) = stir Then IsGood = "GOOD" Else IsGood = "BAD" End If End Function
Die erste Funktion RegEx
führt einen regulären Ausdruck aus. Die zweite Funktion IsGood
gibt die Zeichenfolge zurück, GOOD
wenn die Ausgabezeichenfolge mit der Eingabezeichenfolge übereinstimmt (dh die gesamte Zeichenfolge stimmt genau mit dem regulären Ausdruck überein) BAD
.
Schreiben Sie nun in einer Ersatzspalte irgendwo (es kann eine verborgene Spalte sein) in Ihrem Arbeitsblatt eine Formel wie:
=IsGood(A1)
(Verwenden Sie Anker, wenn dies für mehrere Zeilen erforderlich ist.)
Gehen Sie dann auf der Multifunktionsleiste zu Daten -> Datenüberprüfung -> Datenüberprüfung ..., wobei die Zellen mit den zu testenden Daten im Arbeitsblatt ausgewählt sind .
Ändern Sie die Dropdown-Box "Zulassen:" in "Benutzerdefiniert" und in "Formel" beispielsweise um:
=B1="GOOD"
Ersetzen Sie "B1" durch den Verweis auf die erste Zelle, die Ihre =IsGood
Formel enthält - nicht die Zellen, die Ihre Eingabedaten enthalten.
Nun, um Ihre Ergebnisse zu testen:
- Geben Sie etwas wie "Hallo" in eine Zelle ein, die der Datenüberprüfung unterzogen wird. Sie erhalten eine Fehlermeldung und dürfen die Bearbeitung nicht durchführen.
- Geben Sie etwas wie "12.34 / 56.78" ein und es funktioniert wie in Excel normal.
- Wenn Sie etwas wie "12.34,56.78" eingeben, wird der Fehler bei der Datenüberprüfung angezeigt, da das Komma nicht mit dem regulären Ausdruck übereinstimmt.
Sie können den Regex in meinem Code verbessern, um laxer zu sein, wenn Sie Werte wie "12" anstelle von "12.00" akzeptieren können. Dies hängt jedoch von Ihren genauen Anforderungen und Ihrer Fähigkeit ab, reguläre Ausdrücke zu verstehen.
Grundsätzlich [0-9][0-9]\.[0-9][0-9]/[0-9][0-9]\.[0-9][0-9]
ist ein regulärer Ausdruck, der besagt "Entsprechung einer 2-stelligen Zahl gefolgt von einem Punkt, dann einer weiteren 2-stelligen Zahl, dann einem Schrägstrich vorwärts, dann einer weiteren 2-stelligen Zahl, dann einem Punkt, dann einer weiteren 2-stelligen Zahl". . Das ist ziemlich streng:
- Alle Leerzeichen stimmen nicht überein
- Wenn eine der Zahlen 0, 1 oder 3 oder mehr Ziffern enthält, kann sie nicht übereinstimmen. Zum Beispiel
12.375/37.00
würde wegen der zusätzlichen Ziffer ausfallen,5
. - Die Verwendung eines umgekehrten Schrägstrichs
\
anstelle eines Schrägstrichs/
würde nicht passen. Sie können das Alternation-Zeichen|
im regulären Ausdruck verwenden, um anzuzeigen, dass eine der beiden Möglichkeiten zulässig ist. Auf diese Weise können Sie entweder einen Vorwärts- oder einen Rückwärts-Schrägstrich zulassen. - Die Möglichkeiten gehen weiter. Sie können locker sein und mit Quantifizierern eine beliebige Anzahl von Ziffern zulassen . Ich werde nicht alle Möglichkeiten regulärer Ausdrücke in dieser Antwort behandeln.