Komplexität von Formeln verringern

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Komplexität von Formeln verringern

Re: Komplexität von Formeln verringern

von balu » Do, 06.01.2011 20:30

Hallo Leute.

@paljass
dass nur gerechnet werden soll, wenn Geht größer als Kommt ist.
Verzeih, aber das wirft doch die total unlogische Frage auf: Kann man gehen bevor man kommt? :lol:
Spaß beiseite, und es ist ja auch nichts gegen dich.
Wenn ein Ausschlusskriterium lautet
Andi_CH hat geschrieben: Falls das eine Vereinfachung bringt, wird nie über Mitternacht hinaus gearbeitet
und beim eintragen der Stunden darauf geachtet wird das die Zeiten an den richtigen Stellen hinkommen, was soll dann schon groß schief gehen?
Klar gibt es noch immer irgendwelche Restrisiken, aber lassen wir doch die Kirche im Dorf. Denn sonst müsste ja auch noch überprüft werden, ob derjenige der die Zeiten eingibt sich nicht nur in der Spalte, sondern auch noch in der Zeile vertut. Also Kommt in der 4. und Geht in der 5. Zeile. Und ähnliche Fisematente.

Dennoch möchte ich dir an dieser Stelle eine alternative zu deiner Formel zeigen.
Deine

Code: Alles auswählen

=WENN(ODER(B1*C1=0;C1<B1);0;C1-B1)+WENN(ODER(E1*D1=0;E1<D1);0;E1-D1)
Meine

Code: Alles auswählen

=WENN(B1*C1;MAX(B1:C1)-MIN(B1:C1);0)+WENN(D1*E1;MAX(D1:E1)-MIN(D1:E1);0)
Sie ist wohl etwas länger als deine, aber auch irgendwie verständlicher. Das ist jetzt aber außerhalb jeglicher Wertung. Okay? :wink:


@Andy
Ich werde das heute Abend mal auspacken und anschauen was ich löschen kann oder vermutlich noch besser ganz neu aufbauen.
Ersteres ist absolut nicht gut. Denn weißt Du wo und wie Du alles in einer entippten .ods-Datei löschenn kannst und musst? Ich glaube kaum.
Letzteres ist besser. Da dadurch auch Fremdformate von Excel nicht übernommen werden.

Das Sheet MUSS jederzeit korrekt rechnen, auch wenn jemand erst 1 oder 3 Zeiten eingegeben hat - es soll nirgendwo #WERT stehen!
Das tun beide Formeln, die von paljass und mir.



Gruß
balu

Re: Komplexität von Formeln verringern

von Gert Seler » Do, 06.01.2011 19:28

Hallo Andi,
mein Ding wäre, nur 1*"Kommt & Geht" und die Pausenzeit automatisch abziehen, so einfach geht's.

mfg
Gert

Re: Komplexität von Formeln verringern

von Andi_CH » Do, 06.01.2011 16:19

Ganz ursprünglich war das ein Excel-Sheet. (Abär isch abe gar geine Egszell mähr :-) - und bin meistens glücklich darüber)
Ganz zum Schluss kann ich es dann für Einzelne immer noch als Excel exportieren, aber mehr ist defintiv nicht geplant. (Ausser dass ich das ganze vielleicht doch mal durch ein Java-Programm ablöse, welches CSV oder was auch immer schreibt)

Ich werde das heute Abend mal auspacken und anschauen was ich löschen kann oder vermutlich noch besser ganz neu aufbauen.
Das Ding hat auch einige Abstürze und Rekonstruktionen hinter sich - ich denke die haben aus Spuren hinterlassen.

Das Sheet MUSS jederzeit korrekt rechnen, auch wenn jemand erst 1 oder 3 Zeiten eingegeben hat - es soll nirgendwo #WERT stehen!
Ausserdem kann es sehr wohl sein, dass jemand nur an einem halben Tag arbeitet.

Pausenzeiten berücksichtigen? Theoretisch gibt es das hier auch, aber es interessiert keine Sa* :-) ist jeder selbst verantwortlich.
(Es üerbprüft ja auch niemand ob die eingegebenen Zeiten stimmen - also wenn ich über Mittag durcharbeiten will, würde ich einfach eine entsprechende Pause buchen und Verschiebe das Nachmittags-Geht entsprechend ;-) )

Re: Komplexität von Formeln verringern

von balu » Do, 06.01.2011 15:13

Hallo Andy,

es ist allgemein Bekannt, dass das Forum zur Zeit echte Probleme hat. Siehe auch z.B. die Stickys in jeder Forumsrubrik.

Was hast Du denn da alles in der Datei drin, das die so extrem groß ist?
Da sind ja abertausende Objecte drin. Genau gesagt: 5922 * Object

Frage war überflüssig, da ich das Rätsel elemeniert habe.
In der Originaldatei, die Du hier in einem anderen Beitrag gepostet hattest, waren an unterschiedlichen Stellen *Unsichtbare* Grafiken drin, die man mittels Navigator finden konnte. Und diese Grafiken habe ich in der "Originalen" gelöscht, und anschließend dies eine Tabellenblatt 11 mal kopiert. Und nun ist diese Datei nicht mehr wie zuvor 110 KB, sondern nur noch 62 KB groß.

Die Ursprungsdatei hatte wohl schon einen Hau-wech.
(ürigens was sind KiB? :shock: )
Guckst Du da -> http://de.wikipedia.org/wiki/Kibibyte


1. Wenn am Vormittag beide Zeiten definiert sind und die erste Zeit kleiner ist als die Zweite, wird die Differenz genommen, ansonsten 0
2. Wenn am Nachmittag beide Zeiten definiert sind und die erste Zeit kleiner ist als die Zweite, wird die Differenz genommen, ansonsten 0
Folgendes Szenario:
B = Kommt
C = Geht
D = Kommt
E = Geht
Dann total einfach.

Code: Alles auswählen

=WENN(B1*C1;C1-B1;0)+WENN(D1*E1;E1-D1;0)
Oder was meinst Du dazu paljass? :wink:


Gruß
balu

Re: Komplexität von Formeln verringern

von Gert Seler » Do, 06.01.2011 14:19

Hallo Andi,
die Datei konnte ich korrekt runterladen und entpacken(931kb)WinRAR.
Die Forumsseiten werden heute schneller aufgebaut.
Übrigens eine gute "Tabelle". Jetzt meine Frage : Erkläre bitte, warum überhaupt "Vormittags-" und "Nachmittagszeiten" aufgelistet werden müssen ?
Da es von der Logik her keinen Sinn macht.
Du bist der Spezi und kennst Dich in Deiner Firma aus. Es wären auch noch die Pausenzeiten zu berücksichtigen, in "Deutschland" ist nach 6,5Std "Arbeitszeit
eine Pause von 30Minuten einzuhalten.

mfg
Gert

Re: Komplexität von Formeln verringern

von Andi_CH » Do, 06.01.2011 11:04

Arrrgh - gezippt über 900kB .....

und ausserdem was soll das ewige:

Allgemeiner Fehler
SQL ERROR [ mysqli ]

Tabelle './forensql3/ooo_de_search_wordmatch' ist als defekt markiert und der letzte (automatische?) Reparaturversuch schlug fehl [144]

Beim Laden der Seite ist ein SQL-Fehler aufgetreten. Bitte kontaktiere die Board-Administration, falls dieses Problem fortlaufend auftritt.

Re: Komplexität von Formeln verringern

von Andi_CH » Do, 06.01.2011 11:00

Warum hat dasDing 14MB wenn es ausgepackt ist?
Habe ich die Grenzen von Calc wirklich schon erreicht?

Arrrrrgh!

Die Datei ist zu groß. Die maximal erlaubte Dateigröße ist 128 KiB.

(ürigens was sind KiB? :shock: )

und was soll das ewige:
Allgemeiner Fehler
SQL ERROR [ mysqli ]

Tabelle './forensql3/ooo_de_search_wordmatch' ist als defekt markiert und der letzte (automatische?) Reparaturversuch schlug fehl [144]

Beim Laden der Seite ist ein SQL-Fehler aufgetreten. Bitte kontaktiere die Board-Administration, falls dieses Problem fortlaufend auftritt.

Re: Komplexität von Formeln verringern

von Andi_CH » Do, 06.01.2011 10:19

Erst einmal kämpfe ich mit/gegen OpenOffice:

Regelmässig tritt der Fehler:
Fehler beim Speichern des Dokumentes blabla:
Allgemeiner Fehler.
Allgemeiner Ein-/Ausgabefehler.

auf.

Der PC ist sicher in Ordnung, Schreibrechte hab ich auch, es ist auf dem lokalen Disk, der Disk ist nicht voll
Sind 16MB echt zu viel???? Das kann ja wohl nicht sein?


Die Daei liegt http://www.mediafire.com/?ss3kexzbqbihbxu hier

Re: Komplexität von Formeln verringern

von Andi_CH » Do, 06.01.2011 08:34

Ohne die Formel jetzt abzutippen glaube ich nicht, dass sie funktioniert :(

Die Anforderung ist doch ganz klar formuliert! (Ok - es mag anstrengend sein einige Posts zurück zu lesen)

Wenn am Vormittag beide Zeiten eingegeben sind wird die Zeit berechnet, auch wenn am Nachmittag eine oder beide Zeiten fehlen.
Wenn am Nachmittag beide Zeiten eingegeben sind, wir die Zeit berechnet und addiert, auch wenn am Vormittag eine oder beide Zeiten fehlen.

Es müssen NICHT alle 4 Zeiten vorhanden sein!

Re: Komplexität von Formeln verringern

von Gert Seler » Mi, 05.01.2011 22:45

Hallo Andi,
also das ist die Formel :

Code: Alles auswählen

=WENN(UND(B7<>"";C7<>"";D7<>"";E7<>"");(C7-B7)+(E7-D7)+F7;0)
Und sagt folgendes : Wenn in "B7" bis"E7" etwas Steht (<>"") , dann rechne (C7-B7)plus(E7-D7)+F7
Nächster Punkt :
Soweit so gut, wenn nun aber eine Zeit fehlt, wird falsch gerechnet.
Das wird mit der "WENN(UND(...." Formel abgefangen.
Mit "+F7 " in der obigen Formel wird die "bezahlte Abwesenheit" auch addiert. Das heißt, Vormittag & Nachmittag werden komplett berechnet.
Hier noch ne Hilfe, bitte lesen :
http://www.ooowiki.de/CalcFunktionenDat ... rieCalc%29
und hier :
http://www.ooowiki.de/WennVerschachtelu ... rieCalc%29

mfg
Gert

Re: Komplexität von Formeln verringern

von Andi_CH » Di, 04.01.2011 15:33

balu hat geschrieben:Warum addierst Du da zwei WENNs? Das ist mir nicht verständlich.
Die drei vorkommenden WENN

1. Wenn am Vormittag beide Zeiten definiert sind und die erste Zeit kleiner ist als die Zweite, wird die Differenz genommen, ansonsten 0
2. Wenn am Nachmittag beide Zeiten definiert sind und die erste Zeit kleiner ist als die Zweite, wird die Differenz genommen, ansonsten 0
3. Zusammenzählen zur Tagesarbeitszeit, aber nur wenn die 2. Zeit vom Vormittag kleiner ist als die Erste vom Nachmittag, ansonsten 0

Hm, ist Prosa, aber sagt dasselbe aus wie der Java-Code ;-)

Re: Komplexität von Formeln verringern

von Andi_CH » Di, 04.01.2011 15:23

Paljass: Gegen deinen Vorschlag spricht eigentlich nichts, nur bringt er nicht wirklich eine Vereinfachung. Oder habe ich etwas falsch verstanden? Ich wollte den Umweg über die Zwischenfelder eliminieren.

Die von mir oben gebastelte komplexe Formel ist nicht überprüft - die könnte auch falsch sein.
Meine Javaijmplementation kann als Beschreibung betrachtet werden was berechnet werden soll - die liefert das Referenzresultat

Matrixformeln? Da kann ich mir nicht mal in meinen kühnsten Träumen vorstellen was die machen, aber wenn ich damit alle if's übersichtlicher gestalten kann, warum nicht.

Ist der Weg über eine Formel / ein Makro keine Lösung? Davon habe ich allerdings noch gar keine Ahung wie/wo ich da was für Code schreiben müsste und wie die dann getriggert werden.

PS: Mein Job: Ich implementiere Berechnungen mit locker mal so 50 - 100 Thermen, welche auch mal iterativ gelöst werden müssen.
Aber das in einer Tabellenkalkulation - nö, das wäre mein Tod .... ich mach das ganz easy in Java :-)

Nach oben