Rechnen mit Uhrzeiten

Moin,

eigentlich eine ganz einfache Sache, aber ich tue mich da schwer:
Ich will die Differenz zweier Zeiten berechnen: zeit_1 = 23:40, zeit_2 = 23:52. Beide stehen in jeweils einer Zelle, Format hh:mm.
Mache ich zeit_2 - zeit_1, so ergibt das richtig 00:12
Wenn aber zeit_2 = 00:22 ist, ergibt die Differenz Unsinn, also bei Differenzbildung über Mitternacht hinweg. Natürlich sollte das 00:42 ergeben.

Was muss ich tun?
Danke, Laika

Ich bin nicht so ganz sicher, wierum auf der Uhr Du das rechnen willst? Also willst Du die 42 min oder willst Du 23:28 h?
Generell hilft Dir der Betrag =ABS(A1-A2), damit kriegst Du aber immer den „positiven“ Weg. Wenn Du den anderen willst, musst noch bei Werten >12 den Wert von 24 abziehen. Ähm, ist das verständlich? =WENN(A4>12;A4;24-A4)
Hilft das weiter?

14.1 6 Minuten nach 14 Uhr. 14.06.

14.2 12 Minuten nach 14 Uhr. 14.12.

14.3 18 Minuten nach 14 Uhr. 14.18.

usw.

Blödsinn ??

Hallo Laika

Versuche es mal so:

Uhrzeiten

Ob Du in A2 „23:52“ eingibst oder „00:22“, das Resultat sollte immer richtig sein.

Wenn die „Schlusszeit“ über Mitternacht hinaus geht, fügt Excel mit dem Ausdruck

+(A2<A1)

zur Schlusszeit einen Tag (24 Stunden) hinzu und macht aus 00:22 „quasi“ 24:22. Und davon lässt sich 23:40 ohne Probleme subtrahieren.

Grüsse Niclaus

Danke Niclaus, das funktioniert. Allerdings nur, wenn man das direkt in die Zellen einträgt. Ich hatte vergessen zu sagen, dass ich das in VBA machen will.
Mit

Cells(Zeile, 7).Value = Cells(Zeile, 4).Value + (Cells(Zeile, 4).Value < Cells(Zeile-1, 4).Value) - Cells(Zeile-1, 4).Value

funktioniert es nicht, auch wenn ich das Format auf hh:mm setze. Daher habe ich die Formel eingetragen:

Cells(Zeile, 7).FormulaR1C1 = "=RC[-3] + (RC[-3]<R[-1]C[-3]) - R[-1]C[-3]"

Das geht, ist auch in einer Schleife, die durch eine längere Tabelle geht, möglich.
Ich denke, die Indicés von Cells brauche ich nicht zu erläutern, dürften klar sein.

Gruß, Laika

Will einfach die Zeitdifferenz anzeigen. In D/Europa ist das nun mal die 24-Stunden-Zeit. Aber das verstehen Amerikaner ja gar nicht. Die Zeit kann natürlich rund um die Uhr gehen - klar. Ich habe versucht, mit „+24:00“, mit 12PM und allem Möglichen, was man da variieren kann … nix geht. Egal, die haben es auch so auf den Mond geschafft :wink:

Gruß, Laika

Hallo,

das Rechnen mit Datum/Zeit ist in VBA mehr als unhandlich.

Meine Erfahrung hat gezeigt, das es am einfachsten ist, sich nicht mit dem Zeitformat rum zu quälen, sondern alles mit Double bzw. Long Werten zu berechnen, was auch dem internen Format entspricht.

Wenn man ein Datum mit einem Double darstellt, entspricht der Vorkomma Anteil dem Datum und der Nachkomma Anteil der Uhrzeit als Bruchteil eines Tages( z.B. 0,1 entspricht 2h 24min)

Hier kannst du dir mal einige Sachen anschauen, kommt zwar aus der VB6 Zeit aber ist in VBA ziemlich identisch

https://www.activevb.de/tipps/vb6tipps/tipp0402.html

Tschau
Peter

Laika, versuchs mal so:

Ende = Cells(Zeile, 4).Value
Start = Cells(Zeile - 1, 4).Value
    If Ende < Start Then Ende = Ende + 1
Differenz = Ende - Start
Cells(Zeile, 7).Value = Differenz

Die betroffenen Zellen sind als Uhrzeit formatiert. - Bei mir funktioniert das einwandfrei. Ich hoffe, bei Dir auch.

Grüsse Niclaus

1 Like

Ja, das geht. Danke nochmal. Wenn ich es jetzt lese ist’s klar: Datum im Vorkomma, Zeit im Nachkomma der internen Fliesskomma-Darstellung. + 1 also plus ein Tag = + 24 Stdn. Grrr, schüttel …

Das ist sehr milde ausgedrückt.
Ich habe selber ein Jahr in den USA gearbeitet (Boston) und war durchaus angetan von der Arbeits- und Denkweise der amerikanischen Kollegen. Aber Microsoft sitzt an der Westküste, da gehen die Uhren wohl anders …

Gruß an alle
Laika

=WENN(K64-J64<WERT(„00:00“);WERT(„24:00“)-J64+K64;K64-J64)

hier ein Beispiel probiere es einfach mit deinen spalten aus.

mfg
Bernd