Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Datumformat mit regexp prüfen

Datumformat mit regexp prüfen
16.11.2020 13:30:01
MCO
Hallo zusammen!
Ich versuche, vor dem exportieren in eine textdatei den zusammengebauten String zu prüfen.
Im speziellen möchte ich die Jahreszahl mit abprüfen, die man eben 2-oder 4-stellig angeben kann.
Mein Halbwissen zu regexp habe ich aus https://www.vba-tutorial.de/applikation/regexp.htm
Die Stelle, an der mein Verständnis aufhört, hab ich mal skizziert.
? vergleiche("12555","(\d{2}|\d{4})") liefert "WAHR", obwohl ich doch nach meinem Verständnis 2 oder 4 stellige Zahl vorgegeben habe, oder?
Danke für´s Mitdenken
Gruß, MCO
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datumformat mit regexp prüfen
16.11.2020 14:37:31
Yal
Jein. Die RegEx befragt "gibt es einen zweistellige oder vierstellige Text, den man als Zahl interpretieren kann", wobei in dem Fall zweistellig immer eine Untermenge von vierstellig, also zweite Teil nutzlos.
"(\d{2}\d{4})" fragt nach einem zweistellige gefolgt von einem 4-stellige Zahl, oder kürzer gesagt, ein 6-stellige Zahl.
Bei Datum kannst Du mit einem Tag ergänzen, eine Datum daraus errechnen und das Jahr rauslassen, wie es dir passt. Trotz RegEx müsstest Du auch noch prüfen, dass Monat kleiner-gleich 12 ist.
Viel Erfolg
Yal
Anzeige
AW: Datumformat mit regexp prüfen
17.11.2020 06:21:45
MCO
Danke yal!
Leider hast du die Schreibweise nicht genau wiedergegeben. Das Zeichen "|" hast du nicht beachtet, daher ist deine Interpretation richtig, aber nicht für mein Beispiel...
Ich habe das Zeichen verwendet aufgrund dieser Passage im Artikel:
In den Klammern können mit | auch Alternativen eingebaut werden, z. B.
And(i|reas), für Andi oder Andreas,
Wir gehen zu (dir|mir|uns|euch).

Dann würde für mich vergleiche("12555","(\d{2}|\d{4})") bedeuten, Ist 12555 eine 2- oder 4 stellige Zeichenfolge "die man als Zahl interpretieren kann".
Was ist daran falsch gedacht?
LG, MCO
Anzeige
AW: Datumformat mit regexp prüfen
17.11.2020 08:59:08
Yal
Hallo MCO,
nein, Du hast richtig interpretiert. Deine Verständnis vom | ist korrekt.
Es liegt an der Reihenfolge: wenn 4 Buchstaben nacheinander ein 4-stellig Zahl darstellen, dann bilden die 2 ersten Buchstaben auch einen Zahl.
Also ab dem Moment, wo der Zahl aus midestens 2 Buchstaben besteht, bekommst Du mit diesem RegEx immer die ersten 2 Buchstaben. Mehr nicht.
Umgekehrt würde (\d{4}|\d{2}) dann, wenn vorhanden, ein 4-stellige Zahl zurückgeben, wenn nicht dann ein 2-stelligen (wenn vorhanden). Dann müsstest trotzdem anschliessend prüfen, ob es die zurückgegebene Antwort 2 oder 4-stellig ist.
Viel Erfolg
Yal
Anzeige
Danke!
17.11.2020 12:27:44
MCO
Vielen Danke für die geduldige Erklärung :-)
Gruß, MCO
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Datumformat mit RegExp in Excel überprüfen


Schritt-für-Schritt-Anleitung

Um das Datumformat in Excel mithilfe von RegExp zu überprüfen, folge diesen Schritten:

  1. Öffne Excel: Stelle sicher, dass Du eine Version von Excel verwendest, die VBA (Visual Basic for Applications) unterstützt.

  2. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Modul hinzufügen: Klicke mit der rechten Maustaste auf "VBAProject", wähle "Einfügen" und dann "Modul".

  4. RegExp-Code einfügen: Kopiere den folgenden Code in das Modul:

    Function RegExMatch(inputString As String, pattern As String) As Boolean
       Dim regEx As Object
       Set regEx = CreateObject("VBScript.RegExp")
       regEx.Pattern = pattern
       regEx.IgnoreCase = True
       regEx.Global = False
       RegExMatch = regEx.Test(inputString)
    End Function
  5. RegExp verwenden: Du kannst die Funktion RegExMatch verwenden, um zu überprüfen, ob ein Datum bestimmten Kriterien entspricht. Zum Beispiel:

    =RegExMatch(A1, "^\d{2}|\d{4}$")

    Dies prüft, ob der Inhalt in A1 eine 2- oder 4-stellige Zahl ist.

  6. Ergebnisse auswerten: Überprüfe die Rückgabe der Funktion, um festzustellen, ob das Datumformat korrekt ist.


Häufige Fehler und Lösungen

  • Fehler: Unerwartete Ergebnisse
    Lösung: Stelle sicher, dass das Regex-Muster korrekt ist. Zum Beispiel könnte der Ausdruck (\d{2}|\d{4}) dazu führen, dass ein 4-stelliger Wert immer als 2-stellig erkannt wird. Verwende stattdessen (\d{4}|\d{2}), um zuerst nach der 4-stelligen Zahl zu suchen.

  • Fehler: Keine Übereinstimmung
    Lösung: Überprüfe, ob der eingegebene Wert tatsächlich dem erwarteten Format entspricht. Möglicherweise sind auch führende Nullen im Spiel.


Alternative Methoden

Wenn Du keine Regex verwenden möchtest, kannst Du auch die integrierten Excel-Funktionen nutzen. Hier sind einige Alternativen:

  • TEXT-Funktion: Um das Datum in ein bestimmtes Format zu bringen. Beispiel:

    =TEXT(A1, "TT.MM.JJJJ")
  • DATUM-Funktion: Um sicherzustellen, dass das Datum korrekt interpretiert wird. Beispiel:

    =DATUM(JAHR(A1), MONAT(A1), TAG(A1))

Praktische Beispiele

Hier sind einige Beispiele, wie Du mit RegExp in Excel arbeiten kannst:

  1. Prüfung auf gültiges Datum:

    =RegExMatch(A1, "^(0[1-9]|[12][0-9]|3[01])[./-](0[1-9]|1[0-2])[./-](\d{2}|\d{4})$")

    Dieser Ausdruck prüft, ob das Datum im Format TT.MM.JJJJ oder TT-MM-JJJJ vorliegt.

  2. Monat als zweistellige Zahl:

    =RegExMatch(A1, "^(0[1-9]|1[0-2])$")

    Dies stellt sicher, dass der Monat als zweistellige Zahl eingegeben wurde.


Tipps für Profis

  • Nutze die Möglichkeit, mehrere Regex-Pattern in einer Funktion zu kombinieren, um komplexere Prüfungen durchzuführen.

  • Wenn Du mit regexreplace excel arbeitest, kannst Du unerwünschte Zeichen in einer Zeichenfolge entfernen, indem Du die Funktion Replace in Kombination mit RegExp verwendest.

  • Achte darauf, die Performance im Auge zu behalten, wenn Du mit großen Datenmengen arbeitest. Zu viele RegExp-Aufrufe können die Berechnungszeit erhöhen.


FAQ: Häufige Fragen

1. Kann ich RegEx in Excel ohne VBA verwenden?
Nein, RegEx ist in Excel nur über VBA verfügbar. Du musst ein Modul erstellen, um Regex-Funktionen zu nutzen.

2. Wie kann ich sicherstellen, dass das Datum korrekt eingegeben wird?
Du kannst die DATUM-Funktion verwenden, um zu überprüfen, ob das Datum gültig ist, und die oben genannten RegEx-Methoden zur Validierung des Formats nutzen.

3. Was ist der Unterschied zwischen 2- und 4-stelligen Jahren?
Ein 2-stelliges Jahr könnte in Excel zu Verwirrung führen, da es unterschiedlich interpretiert werden kann. Es ist ratsam, immer 4-stellige Jahre zu verwenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige