Zeiten stets vierstellig und ohne Doppelpunkt (oder anderen Trenner) eingeben
Es gibt den schönen und gewiss auch wahren älteren Spruch: „Der Mensch ist ein Gewohnheitstier”. 😉 Damit ist gemeint, dass wir alte Gewohnheiten schwer ablegen können und uns eingefahrene Wege vielfach lieber sind als (mehr oder weniger) neue Pfade zu beschreiten.
So ist es in manchen Programmen üblich, Zeiten vierstellig und (natürlich) ohne Doppelpunkt oder andere Trennzeichen einzugeben. Die User geben dann 0837 ein und das Programm „weiß”, dass das 08:37 ist. Excel ist ohne Hilfe nicht in der Lage, derartige Eingaben korrekt in eine Zeit umzuwandeln oder solch eine Eingabe auch nur wie eine Zeit aussehen zu lassen, also mit Doppelpunkt. Sie werden hier verschiedene Szenarien kennen lernen, die Ihnen eine Anregung bieten sollen. Auch wenn diese Auswahl nur einen Teil der Möglichkeiten darstellt.
Ausgabe in anderem Feld
Eingabe als Text
Sinnvollerweise werden die Felder, wo derartige Zeiteingaben eingegeben werden sollen, im Vorwege als Text formatiert (Zahlenformat). Andernfalls muss zwecks Formatierung als Text ein Auslassungszeichen '
(Großschreibung #) vor der Zahl eingegeben werden.Die Zeiteingabe sei ‑wie in allen hier abgehandelten Beispielen- in Zelle A1, die Formeln stehen dann beispielsweise in B1. Und wie bereits erwähnt, ist die Ziffernfolge (vorerst) immer vierstellig. Und da bieten sich folgende Möglichkeiten an:
=LINKS(A1; 2) & ":" & RECHTS(A1; 2)
Zugegeben, das ist die einfachste und in den meisten Fällen auch sinnvollste Lösung. Aber: Das Formelergebnis ist Text, keine Zeit. Sie erkennen das recht gut daran, dass das Ergebnis linksbündig in der Zelle steht. Und damit kann Excel dann auch nicht rechnen, zumindest nicht „offiziell”. In manchen Fällen gelingt es Excel gewiss, diesen Text in einen zu berechnenden Wert umzuwandeln, aber eben nicht immer.
Ebenfalls für die Textausgabe habe ich im Internet eine wirklich schöne Formel gefunden:
=ERSETZEN(A1; 3; 0; ":")
Das dritte Zeichen mit der Länge Null wird durch einen Doppelpunkt ersetzt, was einem einfügen dieses Zeichens entspricht. Für Enthusiasten eine wirklich schöne Lösung, für Normaluser gewiss nicht auf den ersten Blick durchschaubar. Und aus diesem Grund würde ich sie nicht einsetzen, denn nach einigen Monaten weiß selbst ich wahrscheinlich nicht mehr, wie diese Formel zustande gekommen ist.
Möchten Sie einen korrekten Wert (sprich eine „echte” Uhrzeit bzw. Zahl) als Rückgabe bekommen, dann bieten sich ad hoc zwei Möglichkeiten an:
=ZEIT(LINKS(A1;2);RECHTS(A1;2);)
gibt einen echte Zeit zurück, typischerweise im amerikanischen AM/PM, also 12-Stunden-Format. Das können Sie natürlich Ihrem Wunsch entsprechend formatieren. Übrigens: Dem letzten Semikolon folgt nichts; Excel erwartet drei Argumente, darum muss das Semikolon dort stehen. Der Optik wegen können Sie daran anschließend durchaus auch eine Null (für 0 Sekunden) eingeben.
Alternativ lässt sich auch die zuerst verwendete Formel mit einer kleinen Ergänzung einsetzen:
=ZEITWERT(LINKS(A1; 2) & ":" & RECHTS(A1; 2))
Hier wird Ihnen eine Zahl zwischen null und eins zurück gegeben, welche das numerische Pendant der Uhrzeit ist. Hier ist es mehr als hilfreich, das Zahlenformat auf beispielsweise hh:mm umzustellen. Hinweis: Das „mm” muss in Kleinschrift erfolgen, da „MM” (Großschrift) für „Monat” und nicht für „Minute” steht. Das Ergebnis ist dann auch eine „echte” Zeitangabe. Eine kurze Erklärung zu diesem „Bäumchen-wechsele-dich-Spiel”: Die Funktion Zeitwert wandelt einen Text, welcher als Zeit interpretiert werden kann, in einen echte Excel-Zeit um. Da Excel aber Zeiten als ganz normale Zahlen speichert und verarbeitet, sollte diese Zahl in einen anderen Zahlenformat dargestellt werden. Statt 0,75 steht dann dort 18:00.
Ist es aber möglich, dass die Zeit auch einmal ohne die führende Null eingegeben wird, also in der Form 837, dann wird solch eine Formel schon etwas umfangreicher; denn es können ja drei oder vier Stellen sein. Basierend auf der erstgenannten Formel:
=LINKS(A1; 2) & ":" & RECHTS(A1; 2)
ersetze ich das erste A1
durch diese Anweisung:
=RECHTS("0" & A1; 4)
was dann diese Formel ergibt:
=LINKS(RECHTS("0" & A1; 4); 2) & ":" & RECHTS(A1; 2)
Eine kurze Erklärung dazu: Zuerst stelle ich vor den Inhalt der Zelle A1 eine Null. Dadurch kann der Inhalt ja fünfstellig werden, falls bereits eine führende Null eingegeben wurde oder eine Uhrzeit ab 10:00 eingegeben worden ist. Dann werden von diesem vier- oder fünfstelligen Wert die rechten vier Zeichen ausgeschnitten. Das entspricht dann ja der einheitlichen Vorgabe. Und davon wiederum werden die beiden linken Zeichen als Ziffern vor dem Doppelpunkt bestimmt. – Das ganze geht natürlich auch mit der oben angesprochenen Ersetzen-Funktion.
Eingabe als Zahl
In vielen Dingen ist das Vorgehen aber anders, wenn die Werte nicht als Text sondern als Zahl eingegeben werden. Denn dann wird Excel eine führend eingegebene Null gnadenlos löschen. Aber auch hier gibt es natürlich Lösungen …
Der vielleicht einfachste Weg: Sie wandeln die Zahl in einen vierstelligen Text um und machen daraus eine Uhrzeit. Angenommen Sie geben für 9 Uhr vormittags 0900
ein, dann wird natürlich in der Zelle (nur) die Zahl 900
stehen. Mit dieser Formel würde dann daraus ein Text werden, welcher der typischen Darstellungsweise entspricht:
=LINKS(TEXT(A1; "0000"); 2) & ":" & RECHTS(A1; 2)
Das Ergebnis ist ‑wie bereits erwähnt- reiner Text. Den können Sie nun auf die oben beschriebene Weise mit der Zeitwert-Funktion in eine für Excel „korrekte” Zeit umwandeln. Natürlich werden Sie das Ergebnis noch als Zeit formatieren. Es sind noch weitere Variationen denkbar, die überlasse ich aber Ihrer Experimentierfreude.
Sie werden vielleicht hier oder da über den Tipp „stolpern”, dass folgende benutzerdefinierte Formatierung Erfolg verspricht: 00\:00. Da wird die Uhrzeit, beispielsweise als 0925 eingegeben tatsächlich wie gewünscht angezeigt. Aber: Obwohl es Text ist, kann diese Zelle nicht mit der ZEITWERT() – Funktion in eine echte Zeit umgewandelt werden.
Und doch als „echte” Zeit…
hiob (Username aus/in einem Excel-Forum) hat mich auf eine weitere interessante Variante hingewiesen. die ich hier gerne als Ergänzung vorstelle:
=TEXT(A1; "00"":""00")
Hier ist keine vierstellige Eingabe erforderlich; 345 wird dann als 3:45 ausgegeben, wenn auch immer noch als Text. Danke dafür.
Aber um auf die Überschrift zurück zu kommen: All diese Ausgaben sind reiner Text, sofern Sie nicht die bereits erwähnte ZEITWERT()-Funktion verwendet haben. Und mit Texten kann Excel bekanntlich nicht rechnen. Oder doch? Ja, es geht. Eigentlich immer dann, wenn keine Leerzeichen oder andere unpassende „Zusätze” in der Darstellung des Ergebnisses sind, dann wird Excel versuchen, den Text, der so wie eine Uhrzeit aussieht, auch als solche zu behandeln. Was zu beweisen wäre … 💡
Und es geht sogar noch „frivoler”:
Eindeutig werden hier zwei Texte addiert und es kommt ein numerisches Ergebnis heraus. OK, auf den ersten Blick scheint das etwas irritierend zu sein, aber wenn Sie die Zahl in einem Zeitformat darstellen (beispielsweise das Format aus der Zelle darüber kopieren), dann haben Sie das korrekte Ergebnis.
Und was ich einfach nur als etwas „krude” Methode empfinde, geht bei jeder Text-Ausgabe und führt sofort zu einer korrekten Zahl, die nur noch als Zeit formatiert werden muss:
=LINKS(TEXT(A1; "0000"); 2) & ":" & RECHTS(A1; 2) + "0:00"
oder auch die Ergänzung:
=TEXT(A1; "00"":""00") + "0:00"
wird jeweils das Ergebnis 0,416666667 anzeigen bzw. 10:00 bringen, wenn das Zahlenformat auf Uhrzeit eingestellt ist. Meistens reicht es auch, statt +„0:00” nur +0 einzugeben, aber bei meinen Versuchen hat es bei +0 Ausreißer gegeben, die ich mir nicht erklären kann; darum gehe ich lieber „auf Nummer sicher”.
Ausgabe im gleichen Feld
Ganz anders stellt sich das Vorgehen dar, wenn die Eingabe eines solchen Wertes direkt bei der Eingabe in eine korrekte Zeit umgewandelt werden soll. Dazu bedarf es einer VBA-Prozedur, eines Makros. Hier erst einmal ein beispielhafter Code, welcher alle Eingaben in Spalte A automatisch in einen numerischen Wert umwandelt:
Private Sub WorkSheet_Change(ByVal Target As Range)
Dim Eingabe As Variant
On Error GoTo ErrorHandler
If Not Intersect(Target, Columns(1)) Is Nothing Then
Application.EnableEvents = False
With Target
.Value = CDate(Left(Format(Target, "0000"), 2) & ":" & Right(Target, 2))
.NumberFormat = "[hh]:mm"
End With
End If
ErrorHandler:
Application.EnableEvents = True
End Sub
Diese Sub, dieser Code sollte im Modul des entsprechenden Arbeitsblattes stehen. Die Eingabe wird in jedem Fall in eine lesbare Uhrzeit, mit der Excel auch rechnen kann, umgewandelt. Eine Einschränkung allerdings ist anzumerken: Bei einer Eingabe von 2400
wird zwar korrekterweise 0:00
zurück gegeben, aber es ist nicht die Zeit des Folgetages sondern des 27.07.1906. Das bedeutet, dass die Zeit 2400 (also 24:00 Uhr) nicht eingegeben werden sollte, sondern beispielsweise 0000. – Ist eine Eingabe vom Mitternachts-Wert jedoch erforderlich, kann das Makro entsprechend angepasst werden.
Hinweis: Falls Sie der Doppelpunkt nur nicht verwenden wollen, weil er nicht im Bereich des Zehnerblocks / Nummernblocks liegt, dann sollten Sie gerne einmal hier nachsehen. Natürlich ohne Makro … 🙂
Ein ähnliches Thema finden Sie hier im Blog, da wird die aktuelle Uhrzeit bzw. das heutige Datum per Tastenkombination fest eingetragen.
[NachObenLetzte Verweis=„T&T: Uhrzeit ohne Trenner eingeben”]