Calc: Subtraktion von Uhrzeitangaben

Moin.

Gegeben sei:

A | B | C | D

13:00 | | =B1-A1 | =C1x24

Solange B leer bleibt lautet das Ergebnis

C | D
11:00 | -13

Wie genau kommen bitte diese Ergebnisse zustande?
Nimmt LO bei einer leeren Zelle 0:00 an?

Es geht um die Ermittlung einer Zeitdifferenz aus Uhrzeiten desselben
Tages.
Wie geht man am besten vor, wenn man die sinnlosen
"Zwischenergebnisse", solange noch keine Ende-Zeit eingetragen ist,
vermeiden möchte?

WENN(B1="";"";=B1-A1) scheidet aus, weil mehrere Zeitintervalle von
einem Tag erfasst werden. Das würden dann länglich-hässliche
WENN-Formeln.

Danke.

Gruß, Andreas

Hallo Andreas,
wie kommst du auf dieses Ergebnis?
Wenn ich diese Zehlen in Calc eintrage und die Berechnungen machen lasse, dann kommt bei mir in C 13:00:00 heraus und bei D steht 00:00:00.

Was machst du anders?

Gruesse
Veit

Hallo Andreas,
sorry!
Ich habe beim ersten mal die Fermel in C falschrum.

Richtig muss es lauten:
In C steht bei mir jetzt auch 11:00:00.
Aber in D steht bei mir immer noch 00:00:00.

A B C D
13:00:00 11:00:00 00:00:00

Was willst du mit der Multiplikation *24 bewirken?
Was soll da berechnet werden?

Gruesse
Veit

Veit schrieb:

Was willst du mit der Multiplikation *24 bewirken?

Das berechnet die Stunden als Dezimalzahl.

Aber das ist ein Nebenaspekt.

Gruß, Andreas

Hallo Andreas,

das Ergebnis ist korrekt, auch wenn es verwirrend erscheinen mag. In A steht 13:00 (also 13 Stunden) und B ist leer. Also, was sollte herauskommen, wenn du von nichts 13:00 abziehst. Nichts ist eben nichts, dann bleibt nur minus 13:00 über. Das wird in D korrekt dargestellt. Eine negative Uhrzeit mag seltsam anmuten, aber wenn man darüber nachdenkt, kann nur 11:00 dabei herauskommen. Eine wenn-Abfrage um sinnlose Ergebnisse bei Leerzellen auszublenden, ist gar nicht abwegig: =wenn(istleer(b1);"";b1-a1) - das zweite = bei deiner Formel muss raus.

LG Günther

privat

Hallo Andreas,

es gibt schon eine ganz gute Möglichkeit - in Anlehnung an https://help.libreoffice.org/Calc/Calculating_Time_Differences/de - vielleicht hilft Dir das weiter:

"C:" =(B1>A1)*(B1-A1)

(B1>A1) ist ein logischer Ausdruck. Ist er wahr, hat er den Wert 1, ist er Falsch, hat er den Wert 0

[1] "A", "B" und "C" formatiert als "HH:MM".
[2] Formel für "C": =(B1>A1)*(B1-A1)
[3] Ergebnisse:
[3.1] A: 13:00 | B: 12:10 | C: 00:00
[3.2] A: 13:00 | B: 00:00 | C: 00:00
[3.3] A: 13:00 | B: 13:10 | C: 00:10

Gruß
Hans-Werner ;-))

------ Originalnachricht ------

Hallo Andreas, *,

die unterschiedlichen Ergebnisse - 13 oder 13:00:00 - dürften an unterschiedlicher Formatierung der Zelle liegen.
Wichtiger ist: Datums- und Zeitangaben werden als Dezimalzahl gespeichert und für die Anzeige aufbereitet. Das Datum steckt im ganzzahligen Teil, da werden die Tage, wenn ich mich nicht täusche, ab dem 31.12.1899 als 1, hochgezählt. Die Uhrzeit steckt in den Stellen hinter dem Komma. Die Logik weiß ich nicht auswendig, aber das findet man irgendwo, wenn man es wissen will, ich habe das schon gesehen. Da ist es kein Wunder, dass bei Berechnungen auch mal was passiert, wwas bei Dezimalzahlen normal, bei Uhrzeiten aber auf den ersten Blick verwirrend erscheint.
Das Beste ist, wie Hans-Werner vorschlägt, die vorhandenen Funktionen zu nutzen.

Gruß
Gerhard

Hallo Andreas,

es gibt schon eine ganz gute Möglichkeit - in Anlehnung an
https://help.libreoffice.org/Calc/Calculating_Time_Differences/de -
vielleicht hilft Dir das weiter:

"C:" =(B1>A1)*(B1-A1)

(B1>A1) ist ein logischer Ausdruck. Ist er wahr, hat er den Wert 1, ist
er Falsch, hat er den Wert 0

[1] "A", "B" und "C" formatiert als "HH:MM".

In solchen Fällen nimmt man besser "[HH]:MM". Durch die eckigen Klammern
wird der Wert nicht als Zeit*punkt* sondern als Zeit*periode*
interpretiert und dargestellt (und genau das /ist/ die Differenz zweier
Zeitpunkte ja). Dadurch wird die Darstellung der Stunde nicht auf den
Bereich 00..23 eingegrenzt, sondern es können auch Werte kleiner 0 oder
größer 23 dargestellt werden.

Eine gesonderte Abfrage oder Berücksichtigung von leeren
Zellen/Nullwerten wie durch ...

[2] Formel für "C": =(B1>A1)*(B1-A1)

... ist dann gar nicht mehr notwendig.

[TOFU entfernt]

Wolfgang

Hallo Wolfgang,

ich habe mal eben Deinen Vorschlag angewendet:

Spalte "A": Format "HH:MM"
Spalte "B": Format "HH:MM"
Spalte "C": Format "[HH]:MM"

Mit:

"A": 13:00
"B": leer
"C": =B1-A1 ergibt -13:00

Aber Andreas möchte ja, dass in diesem Fall in "C" keine "Minus"-Zeit angezeigt wird.

Habe ich Dich da irgendwo falsch verstanden ?

Gruß
Hans-Werner

------ Originalnachricht ------

Gerhard Weydt schrieb:

die unterschiedlichen Ergebnisse - 13 oder 13:00:00 - dürften an
unterschiedlicher Formatierung der Zelle liegen.

Nein, die Zellen sind unformatiert. Ansonsten hätte ich das natürlich
erwähnt.

Wichtiger ist: Datums- und Zeitangaben werden als Dezimalzahl
gespeichert und für die Anzeige aufbereitet. Das Datum steckt im
ganzzahligen Teil, da werden die Tage, wenn ich mich nicht täusche, ab
dem 31.12.1899 als 1, hochgezählt. Die Uhrzeit steckt in den Stellen
hinter dem Komma. Die Logik weiß ich nicht auswendig, aber das findet
man irgendwo, wenn man es wissen will, ich habe das schon gesehen. Da
ist es kein Wunder, dass bei Berechnungen auch mal was passiert, wwas
bei Dezimalzahlen normal, bei Uhrzeiten aber auf den ersten Blick
verwirrend erscheint.

Ja, der Stoff ist nicht so ohne. Ich hatte das auch schonmal vor
längerer Zeit gelesen, aber wieder vergessen.

Gruß, Andreas

Hallo Andreas,

Gerhard Weydt schrieb:

die unterschiedlichen Ergebnisse - 13 oder 13:00:00 - dürften an
unterschiedlicher Formatierung der Zelle liegen.

Nein, die Zellen sind unformatiert. Ansonsten hätte ich das natürlich
erwähnt.

ich meinte auch eher bei den anderen, wenn da etwa 13:00:00 erscheint, dann wird das als Datum formatiert sein.
Ob deine als Standard oder Dezimalzahl formatiert ist, käme aufs Gleiche raus, es erscheint einfach eine Zahl.

Gruß

Gerhard

Wolfgang Jäth schrieb:

[1] "A", "B" und "C" formatiert als "HH:MM".

In solchen Fällen nimmt man besser "[HH]:MM". Durch die eckigen Klammern
wird der Wert nicht als Zeit*punkt* sondern als Zeit*periode*
interpretiert und dargestellt (und genau das /ist/ die Differenz zweier
Zeitpunkte ja). Dadurch wird die Darstellung der Stunde nicht auf den
Bereich 00..23 eingegrenzt, sondern es können auch Werte kleiner 0 oder
größer 23 dargestellt werden.

Eine gesonderte Abfrage oder Berücksichtigung von leeren
Zellen/Nullwerten wie durch ...

[2] Formel für "C": =(B1>A1)*(B1-A1)

... ist dann gar nicht mehr notwendig.

Ich habe das von Dir vorgeschlagene Format mit meinem Beispiel
ausprobiert.

A | B | C | D

13:00 | | =B1-A1 (Formatcode [HH]:MM) | =C1x24

Solange B leer bleibt lautet das Ergebnis

C | D
-13 | -13

Mein Anliegen war ja, das C und D leer bleiben, solange B leer ist.

Gruß, Andreas

Wolfgang Jäth schrieb:

[1] "A", "B" und "C" formatiert als "HH:MM".

In solchen Fällen nimmt man besser "[HH]:MM". Durch die eckigen Klammern
wird der Wert nicht als Zeit*punkt* sondern als Zeit*periode*
interpretiert und dargestellt (und genau das /ist/ die Differenz zweier
Zeitpunkte ja). Dadurch wird die Darstellung der Stunde nicht auf den
Bereich 00..23 eingegrenzt, sondern es können auch Werte kleiner 0 oder
größer 23 dargestellt werden.

Eine gesonderte Abfrage oder Berücksichtigung von leeren
Zellen/Nullwerten wie durch ...

[2] Formel für "C": =(B1>A1)*(B1-A1)

... ist dann gar nicht mehr notwendig.

Ich habe das von Dir vorgeschlagene Format mit meinem Beispiel
ausprobiert.

A | B | C | D

13:00 | | =B1-A1 (Formatcode [HH]:MM) | =C1x24

Solange B leer bleibt lautet das Ergebnis

C | D
-13 | -13

Mein Anliegen war ja, das C und D leer bleiben, solange B leer ist.

Da gibt es zwei Möglichkeiten:

1) per Formel:

=WENN(B1="";"";B1-A1)

o. ä.

2) per Formatierung:

[HH]:MM;-[HH]:MM;@

o. ä.

In letzterem Fall werden genau genommen 3 Formate definiert, nämlich für
die Wertebereiche '>0', '<0' und '=0'. Und bei '=0' wird außerdem noch
tief in die Trickkiste gegriffen, nämlich indem das Feld als Text
formatiert wird. Da aber darin gar kein Text enthalten ist (sondern ein
Wert), wird eben auch nix angezeigt.

Btw. hab ich nie verstanden, warum man in diesem Fall das Vorzeichen
explizit mit angeben muss, wenn man es haben will, wo es doch ansonsten
bei negativen Zahlen automatisch erscheint. :-/

Wolfgang