Komplexität von Formeln verringern
Verfasst: Mo, 03.01.2011 16:09
Von, man verzeihe mir meine sarkastische Ader, vernünftigen Programmiersprachen bin ich mich ja einges gewöhnt aber der Aufwand in OOo-Calc 4 Eingabewerte zu prüfen und zu verrechnen verschlägt mir beinahe den Atem 
Gibt es für das unten beschriebene, doch recht banale, Problem eine einfachere und vor allem einfacher wartbare Variante?
Der Benutzer gibt 4 Zeiten ein.
VM Kommt, VM geht, NM kommt, NM geht
B7 - E7
In F7 können bezahlte Abwesenheiten eingegeben werden
Istzustand:
Die Tagesarbeitszeit wird wie folgt berechnet
(Ich weiss nicht mehr woher diese Formeln kommen und warum da ein Vergleich drin steckt. Da reicht sicher eine einfach Subtraktion)
Vormittag (O7): =(C7<B7)+C7-B7
Nachmittag (P7): =(E7<D7)+E7-D7
Tagesarbeitszeit: =O7+P7+F7
Soweit so gut, wenn nun aber eine Zeit fehlt, wird falsch gerechnet.
Der Versuch mit der Formel liefert für den Vormittag das Resultat das ich erwarte
=WENN(UND(NICHT(B7=0);NICHT(C7=0));((C7<B7)+C7-B7); 0)
Mir graut schon vor dem Gedanken, dass ich die Zwischenschritte über Vor- und Nachmittags Felder eliminieren möchte. (Diese Formel und deren Pendant für den Nachmittag in einem Feld - Graus)
Kurzversion:
Muss:
Ich möchte aus 4 Zeiten die Tagesarbeitszeit berechnen, aber nur wenn für einen Halbtag beide Zeiten eingegeben sind.
Einzelne Zeiten werden ignoriert -> Resultat 0
Nice to have
Ich möchte überprüfen ob die Reihenfolge der Zeiten stimmt -> falls nicht gibt die Summe 0
Geht später als Kommt. VM Geht früher als NM kommt.
Einschränkungen:
Falls das eine Vereinfachung bringt, wird nie über Mitternacht hinaus gearbeitet (Da könnte ja NM Geht 24:00 und darauf VM kommt 0:00 eingegeben)
Nein bitte, ich möchte keine Fertigversion einer Zeiterfassung von irgendwoher runterladen, denn dann hätte ich ja nichts gelernt
PS: Ich habe noch nie Funktionen für Ooo geschrieben - wäre das eine wesentlich Vereinfachung?

Gibt es für das unten beschriebene, doch recht banale, Problem eine einfachere und vor allem einfacher wartbare Variante?
Der Benutzer gibt 4 Zeiten ein.
VM Kommt, VM geht, NM kommt, NM geht
B7 - E7
In F7 können bezahlte Abwesenheiten eingegeben werden
Istzustand:
Die Tagesarbeitszeit wird wie folgt berechnet
(Ich weiss nicht mehr woher diese Formeln kommen und warum da ein Vergleich drin steckt. Da reicht sicher eine einfach Subtraktion)
Vormittag (O7): =(C7<B7)+C7-B7
Nachmittag (P7): =(E7<D7)+E7-D7
Tagesarbeitszeit: =O7+P7+F7
Soweit so gut, wenn nun aber eine Zeit fehlt, wird falsch gerechnet.
Der Versuch mit der Formel liefert für den Vormittag das Resultat das ich erwarte
=WENN(UND(NICHT(B7=0);NICHT(C7=0));((C7<B7)+C7-B7); 0)
Mir graut schon vor dem Gedanken, dass ich die Zwischenschritte über Vor- und Nachmittags Felder eliminieren möchte. (Diese Formel und deren Pendant für den Nachmittag in einem Feld - Graus)
Kurzversion:
Muss:
Ich möchte aus 4 Zeiten die Tagesarbeitszeit berechnen, aber nur wenn für einen Halbtag beide Zeiten eingegeben sind.
Einzelne Zeiten werden ignoriert -> Resultat 0
Nice to have
Ich möchte überprüfen ob die Reihenfolge der Zeiten stimmt -> falls nicht gibt die Summe 0
Geht später als Kommt. VM Geht früher als NM kommt.
Einschränkungen:
Falls das eine Vereinfachung bringt, wird nie über Mitternacht hinaus gearbeitet (Da könnte ja NM Geht 24:00 und darauf VM kommt 0:00 eingegeben)
Nein bitte, ich möchte keine Fertigversion einer Zeiterfassung von irgendwoher runterladen, denn dann hätte ich ja nichts gelernt

PS: Ich habe noch nie Funktionen für Ooo geschrieben - wäre das eine wesentlich Vereinfachung?