Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1492to1496
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Manngebirge stauchen / strecken

Manngebirge stauchen / strecken
26.05.2016 15:49:59
raspi
Hallo zusammen,
leider kann ich auf den ursprünglichen Thread nicht mehr antworten, daher die Fortsetzung hier zu dieser Fragestellung: https://www.herber.de/forum/archiv/1492to1496/t1492431.htm
Es ging darum, wie man eine Aufwandsverteilung über die Zeit unter Beibehaltung des Gesamtaufwandes zeitlich strecken oder verkürzen kann. Das Problem hatte mich sehr lange beschäftigt, habe nun aber für meine konkrete Fragestellung eine Antwort gefunden, die ich hier gerne vorstellen möchte.
Sehr wahrscheinlich gibt es in Bezug auf die Programmierung Optimierungsmöglichkeiten, wie man den Code schöner / effektiver / intelligenter schreiben kann. Falls hierzu jemand Ideen und Tipps hat, dann wäre ich darüber sehr erfreut.
Die erste Lösung des Problems durch lupo1 ( https://www.herber.de/forum/archiv/1492to1496/t1492431.htm#1492464 ) war sehr komprimiert und auf Sheet-Basis und behandelte erstmal nur die Stauchung. Wie geschildert könnte man das im Sheet auch abwandeln, aber ich konnte das in VBA nicht auf Streckung ausbauen. Und habe die mathematische Idee dahinter bis heute nicht wirklich verstanden.
Der Ansatz von Michael ( https://www.herber.de/forum/archiv/1492to1496/t1492431.htm#1493542 ) entspricht dem logischen Vorgehen, das ich nun genau so umgesetzt habe. Den Code von Michael konnte ich ebenfalls nicht auf mein Problem "umbauen", denn auch der basierte erstmal nur auf Stauchung und hatte weitere Restriktionen.
Daher nun meine Lösung:
https://www.herber.de/bbs/user/105803.xlsm
Ein großer Knackpunkt war nach den ersten erfolgreichen Tests, dass es einzelne Laufzeiten gab, die fehlerhaft berechnet wurden. Nach langer Suche, wo ich einen Logikfehler habe, konnte ich herausfinden, daass es "lediglich" daran lag, wie Gleitkommazahlen berechnet werden. Hier haben die Rundundsfehler zugeschlagen und Fehler produziert, die nicht nachvollziehbar waren. Durch erzwunges Runden hat es dann funtkioniert. Aber dies hatte Stunden Recherche bedurft :-(
Für Verbesserungsvorschläge bin ich jederzeit offen.

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Manngebirge stauchen / strecken
26.05.2016 18:49:20
Michael
Hi Raspi,
falls noch jemand Lust hat, sich der Geschichte anzunehmen, hier die Datei, die ich Dir am 21.5. gemailt hatte:
https://www.herber.de/bbs/user/105809.xlsm
Das Makro staucht...
Userbild
und dehnt...
Userbild
wobei Du, wie Du im unteren Fall siehst, AUCH angeben kannst, wo das Ergebnis hinsoll, d.h. in dem Fall ist es um einige Tage versetzt.
Genau das ist es, was Du wolltest.
"Weitere Restriktionen" kann ich nicht nachvollziehen...
Bei meiner Programmiererehre! Du hattest einige Tage Zeit, Dich zu äußern (um vielleicht die Bedienung so gestalten, daß es für Dich paßt o.ä.), stattdessen mäkelst Du herum.
ICH helfe Dir jedenfalls nicht mehr weiter.
Gruß,
Michael

Anzeige
sorry, Misverständnis
26.05.2016 20:56:41
raspi
Oooops,
was habe ich denn falsch gemacht?
In keinster Weise mäkele ich herum, das wäre nie meine Absicht.
Im Gegenteil, ich wollte mich eigentlich für die Hilfe bedanken und meine eigene Unzulänglichkeit zum Ausdruck bringen. Und mit Restriktionen meinte ich zuerst einmal für mich, dass ich manches nicht verstanden hatte.
Mein Kommentar bezog sich auf den ersten Ansatz aus dem Thread, offensichtlich habe ich dann wohl deine zweite Datei, die du mir geschickt hattest, nicht komplett umrissen. Und weil du angemerkt hast, wenig Zeit zu haben, wollte ich zu dem Zeitpunkt nicht weiter stören, sondern habe mich selbst versucht.
Und nochmals - das scheint ein grosses Misverständnis zu sein. Ich entschuldige mich vielmals für alles, bei dem ich falsch formuliert habe.
Mein Ziel war eigentlich nur, eine Lösung zu präsentieren, die ich selbst verstehe, nachdem ich ja auch die Frage gestellt hatte.
Ich werde mir deine Lösung nun nochmals vornehmen und versuchen, nachzuvollziehen. Möglicherweise gelingt es mir. Dann werde ich hier berichten.
Sorry.

Anzeige
gute Lösung
26.05.2016 21:51:07
raspi
Michael,
ich habe mir deine Datei nun nochmals angeschaut und festgestellt, dass ich beim ersten Mal wohl zu abgelenkt war.
Ich hätte mir wohl viel Arbeit ersparen können, wenn ich direkt auf deine Lösung aufgebaut hätte. Die ist in den Ergebnissen identisch zu meinen (ich habe mal ein paar Vergleiche gemacht), aber programmtechnisch um Welten besser.
Vielen Dank dafür - ich werde mein Teil nun wohl doch nochmals anfassen, der Code ist einfach eleganter. Ich habe einfach deinen programmtechnischen Ansatz nicht ganz verstanden gehabt.
Ich hoffe, du nimmst meine Entschuldigung an und hilfst mir ggf. doch nochmals, falls ich beim Umsetzen auf meine konkrete Situation irgendwo nicht weiterkommen sollte.
Gruß,
raspi

Anzeige
AW: gute Lösung
26.05.2016 21:56:16
Michael
aha, Du sitzt auch noch an der Kiste.
Hat sich ja eben überschnitten.
Auf alle Fälle: "gute Lösung" ist genau das, was ich hören wollte!
Vielen Dank & bis morgen oder so,
Michael

Nachfrage
28.05.2016 18:22:25
Michael
Hi Ralf,
anbei eine Mini-Datei zu Illustration der "0"-Geschichte: https://www.herber.de/bbs/user/105839.xlsx
Das solltest Du durchdenken, bevor es weitergeht.
Schöne Grüße,
Michael

mini aber beeindruckend owT
28.05.2016 18:52:09
MB12
:-)

danke,
28.05.2016 20:13:50
Michael
Margarete,
hoffentlich kommt ne Antwort.
Bin dann mal wech,
Gruß,
M.

Anzeige
AW: Nachfrage
30.05.2016 19:42:26
raspi
Hallo zusammen,
ich hatte eine "Auszeit", daher erst heute meine Antwort.
Michael,
danke für die Klarstellung. Nun habe ich auch zur Gänze verstanden, wie du das anfangs mit den Nullwerten gemeint hattest.
Diese Überlegung hatte ich noch gar nicht in Betracht gezogen, müßte man aber in der Tat, wenn die Berechnungen "korrekt" sein sollen.
In meinem konkreten Fall habe ich dies derzeit ignoriert, da es sich erstmal nur um eine Abschätzung handelt.
Es geht bei meiner Problemstellung darum, für ein längeres Projekt (ca 2 - 4 Jahre), bei dem mehrere Fachbereiche - teils parallel, teils nacheinander - tätig werden müssen, die Personalbedarfsverteilung auf Monatsbasis zu ermitteln.
Es kommt vor, dass bestimmte Bereiche am Anfang tätig sind, dann warten müssen, bis andere ihren Teil bearbeitet haben, und dann wieder loslegen.
D.h. korrekterweise müsste man hier auch bestimmte Wartezeiten berücksichtigen. Allerdings sind die Basis-Daten auch bereits reine Schätzungen, und es wird quasi davon ausgegangen, dass wenn man die gesamte Arbeit 4 Monate schneller machen muss, man dies ggf. mit Parallelarbeit bewältigen kann. D.h. die Wartezeiten sind ebenfalls als "gestaucht" angenommen, ich habe als deine erste Variante benutzt.
Wenn man das Problem gemäß deiner Erläuterung korrekt lösen will, dann muss man in den Basisdaten die vorhandenen Nullen mit einem Flag versehen, der angibt, wie diese Wartezeiten zu behandeln sind, was ja durchaus in einer Projektlaufzeit durchaus unterschiedlich sein kann. Denn es gibt sowohl "fixe" Zeiten, als auch terminliche Vorgaben.
Kann man das in deine Formeln einbringen?
Aktuell bin ich froh, dass ich dies (noch) nicht berücksichtigen muss.
Und ich habe inzwischen deinen Code bei mir eingebaut und damit auch die Lesbarkeit erhöht.
Bei der Gelegenheit habe ich an anderer Stelle noch einen Rechenfehler entdeckt, von daher ebenfalls nochmals danke, dass ich deinen Code einbauen durfte.

Anzeige
nix zu danken
31.05.2016 17:26:51
Michael
Hi Ralf,
aaalso, daß ich mal die Problematik herausgearbeitet habe, heißt noch lange nicht, daß ich eine Lösung aus dem Handgelenk schüttele: die Geschichte ist echt tricky.
Aber: die Anregung von Dir mit den Flags ist natürlich klasse: damit könnte man alle Fälle berücksichtigen...
Naja, im Prinzip wird es darauf hinauslaufen, daß man die Daten erst Mal nach 0en durchsucht oder flags, ist je egal, und letztere "auswertet".
Je nach Natur des jeweiligen flags muß man dann den kompletten Bereich in Teilbereiche zerlegen und im Prinzip jeden einzelnen für sich genommen dehnen oder Strecken und die passende Anzahl 0en zwischendrin einfügen. Das wird in der Praxis aber bedeuten, daß der gewünschte Dehnungsfaktor nicht in *jedem* Bereich exakt umgesetzt wird: je nach Länge der einzelnen Stücke und der "Natur" der 0en verändert er sich dann auch (also statt durchgängig z.B. 60 Tage auf 45 mit Null an Tag 13 kann es schon sein, daß für 1-12 nicht 60/45 rauskommt, sondern ein paar % mehr oder weniger).
Ich kann Dir jetzt keine schnelles Beispiel basteln, aber mit dem 4 auf 3 war das ja eigentlich schon extrem sichtbar.
Ich würde anregen, daß man sich darüber erst dann nähere Gedanken macht, wenn es wirklich erforderlich ist.
Mein Algo ist, wie gesagt, nicht optimal (das Array ist viel zu groß, der *erste* Gedanke wurde 1:1 umgesetzt, um überhaupt erst Mal die Funktion zu testen, aber das geht einfacher (ha, ha, nicht ohne ernsthaft zu denken) und schneller), aber wenn sie so weit rennt und über kurz oder lang eh daran was zu ändern ist, kann man auch das später angehen.
Kurzum: die Sache ist zwar reizvoll, benötigt aber schätzungsweise min. 5 Stunden (in der Praxis dann erfahrungsgemäß eh das Doppelte) - vielleicht als Programmierauftrag...
Melde Dich halt nochmal, wenn es ernsthaft spruchreif wird.
Bis dahin schöne Grüße und gute Zeit,
Michael
P.S.: Bitte entschuldige, wenn ich (ganz) oben etwas heftig war...

Anzeige
ok
26.05.2016 21:53:44
Michael
Hi Ralf,
entschuldige, daß ich genervt war.
Mein Algorithmus ist ja leider auch nicht ausgereift, insofern, als er zwar grundsätzlich ("wie von mir gedacht") funktioniert, aber viel zu aufwendig rechnet: das zu "glätten" hatte ich erst Mal hintenangestellt.
Schreib doch einfach, wo Dein eigentliches Verständnisproblem liegt bzw. das Problem bei der Anpassung auf Deine Gegebenheiten.
Was SIND denn Deine Gegebenheiten? Wie soll das aussehen? Du hast im ersten Post geschrieben, daß Du x Wertetabellen hast, auf die das Ganze anwendbar sein soll: wie liegen die vor und wo soll das Ergebnis hin?
Und zu guter Letzt: was soll mit den Nullen passieren? Gedanklich ist es ja so: Du hast in den Originaldaten irgendwo mittendrin zwei Nullen nebeneinander. Wenn Du das Ding auf die halbe Zeit stauchst, ist das im Prinzip nur eine Null, aber: je nach dem, wo die in der Tabelle steht, ist das dann "0" zwischen 0 und 24h, vielleicht aber auch zwischen 14h und 14h des nächsten Tages.
Verstehst Du die Problematik? Es kann sein, daß z.B. 20% vom Vortag mit übernommen werden, während die fehlenden 20% des aktuellen Tags beim nächsten Tag "leer" bzw. 0 sind...
D.h. in Worten, 1 Tag Zeit für eine Kundenreaktion könnte von 14h bis 14h gehen, rein rechnerisch, was aber so nicht dargestellt werden sollte: das muß man erst durchdacht haben, bevor man es programmieren kann.
Also, ich bin nicht mehr böse, ok?
Schöne Grüße,
Michael
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige