Überprüfen auf Zeiteingabe (Microsoft Excel)
Excel bietet eine Reihe von Funktionen, die je nach Inhalt einer Zelle True oder False zurückgeben. Beispielsweise gibt ISBLANK True zurück, wenn eine Zelle leer ist, ISERR True, wenn eine Zelle einen Fehlerwert enthält, und ISTEXT True, wenn eine Zelle Text enthält. Sie fragen sich vielleicht, ob es möglich ist, festzustellen, ob eine Zelle eine Zeit enthält.
Die kurze Antwort lautet Nein, Sie können nicht – Excel enthält keine Funktion, die angibt, ob eine Zelle eine Zeit enthält. Der Grund ist ganz einfach: Zeiten und Daten in Excel sind technisch nichts als Zahlen. Ein Datum ist eine beliebige Zahl im Bereich von 1 bis 2958465, die die Daten vom 1.1.1900 bis zum 31.12.19999 darstellt. Wenn Sie der Zahl einen Dezimalteil hinzufügen, stellt dies eine Zeit dar (0 ist Mitternacht, 0,25 ist 6:00 Uhr, 0,5 ist Mittag usw.).
Wenn Sie den Wertebereich kennen, der für Datum und Uhrzeit verwendet werden kann, sowie die Tatsache, dass eine Zelle mit einer Uhrzeit richtig formatiert werden sollte, um eine Uhrzeit anzuzeigen, können Sie eine Formel erstellen, die angibt, ob eine Zelle eine Uhrzeit enthält:
=IF(AND(CELL("format",B2)>="D6",CELL("format",B2)<="D9"), "Time Format","Not Time Format")
Diese Formel überprüft die Formatierung, die auf Zelle B2 angewendet wird. Wenn die Formatierung zeitweise eines der am häufigsten verwendeten Formate ist, wird der Text „Zeitformat“ zurückgegeben. Wenn eine andere Formatierung verwendet wird, gibt die Formel „Not Time Format“ zurück.
Ein anderer Ansatz besteht darin, zu überprüfen, ob der Wert in Zelle B2 ein gültiger Zeitwert ist. Sie können dies tun, indem Sie eine Formel wie die folgende verwenden:
=IF(TIMEVALUE(TEXT(B2,"hh:mm:ss"))=B2, "Time Entry", "Not a Time Entry")
Die Funktion funktioniert einwandfrei, solange Zelle B2 nur eine Zeit enthält. Wenn die Zelle sowohl ein Datum als auch eine Uhrzeit enthält, gibt die Funktion immer „Kein Zeiteintrag“ zurück.
Um das Beste aus beiden Welten herauszuholen – Formate und den Wert in der Zelle überprüfen – sollten Sie eine benutzerdefinierte Funktion in VBA erstellen. Der Grund ist einfach: VBA enthält die IsDate-Funktion, die nicht nur den aktuellen Bereich der Nummer überprüft, sondern auch überprüft, ob die Zelle als Datum formatiert ist. Das folgende Makro enthält ein Beispiel dafür, wie Sie eine solche Funktion erstellen können:
Function IsTime(rng As Range) As Boolean Dim sValue As String sValue = rng.Cells(1).Text On Error Resume Next IsTime = IsDate(TimeValue(sValue)) On Error GoTo 0 End Function
Verwenden Sie zur Verwendung der Funktion die folgende Formel in einer Zelle:
=IsTime(B2)
Die Funktion liest, wie der Wert angezeigt wird (unter Verwendung der Texteigenschaft des Zellenobjekts) und versucht dann, ihn mit der Funktion TIMEVALUE zu konvertieren. Wenn dies ein Datum ist (bestimmt durch die IsDate-Funktion), ist die Anzeige eine gültige Zeit. Wenn es sich nicht um ein Datum handelt, generiert VBA einen Fehler, den der Code so ignoriert, dass er ignoriert wird.
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (3292) gilt für Microsoft Excel 97, 2000, 2002 und 2003. Eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Excel (Excel 2007 und höher) finden Sie hier: