
Ich suche nach einer Möglichkeit, um festzustellen, ob in eine Excel-Zelle eingegebener Text diesem Format folgt: „0000/00/00“ (00 können beliebige einstellige Zahlen sein: {0,1,2,3,4,5,6,7,8,9}).
Gibt es eine Möglichkeit zu überprüfen, ob die Zelle die Formatierung „0000/00/00“ hat?
Was ich bereits weiß:
- Das kann ich mithilfe der Funktion DATEVALUE() in einer Datenüberprüfungsregel für die Zelle überprüfen. Das Problem bei dieser Methode besteht darin, dass sie den Wert 07.04.1001 nicht als gültiges Datum akzeptiert.
- Versucht festzustellen, ob der Text zwei "/"-Zeichen enthält und ob seine Länge 10 Zeichen beträgt. Einige Datenvalidierungsformeln wie: "=OR(AND(LEN(A16)=10,(LEN(A16)-LEN(SUBSTITUTE(A16,"/",""))=2),NOT(FALSE)))", das Problem mit dieser Validierungsregel besteht darin, dass sie Einträge wie "0550//0014" als gültig akzeptieren würde.
PS: Ich arbeite in einer Umgebung, in der die Verwendung von Makros oder Erweiterungen nicht zulässig ist!
Antwort1
Die folgende benutzerdefinierte Funktion gibt zurückWAHRwenn das Argument das richtige Format hat, andernfallsFALSCH:
Option Explicit
Public Function FormatCheck(r As Range) As Boolean
Dim s As String, s2 As String, arr, i As Long
FormatCheck = False
s = r(1).Text
s2 = Replace(s, "/", "")
If Len(s2) <> 8 Then Exit Function
arr = Split(s, "/")
If UBound(arr) <> 2 Then Exit Function
If Len(arr(0)) <> 4 Then Exit Function
If Len(arr(1)) <> 2 Then Exit Function
If Len(arr(2)) <> 2 Then Exit Function
For i = 1 To 8
If Not Mid(s2, i, 1) Like "[0-9]" Then Exit Function
Next i
FormatCheck = True
End Function
Antwort2
Antwort3
Bedenkt, dass@AlexMhat die Antwort als Kommentar gegeben und mich gebeten, meine Frage anhand seiner Strategie zu beantworten. Hier ist, was genau das getan hat, was ich brauchte.
Ich habe die Datenüberprüfungsregel wie folgt festgelegt:
=IF(AND(ISNUMBER(VALUE(MID(A1,1,4))),ISNUMBER(VALUE(MID(A1,6,2))),ISNUMBER(VALUE(MID(A1,9,2))),MID(A1,5,1)="/",MID(A1,8,1)="/",LEN(A1)=10),TRUE)
Und hier ist, was ich bekommen habe: