Hallo Tom,
hab mal wieder Tiefbauingerneur gespielt, und ein neues Tabellenblatt eingefügt. Eigentlich sind es insgesammt 5 eingefügte, aber nur eins davon ist jetzt von Bedeutung.
Dieses Blatt heißt "Tabellenblätter_abfragen", und der Name ist programm. Dort geht es nur um Berechnungen.
Ich dachte mir, dass ich jetzt mal anfange die einzelnen Mitarbeiter aus dem "Old-Layout" rausfiltere um danach die Arbeitsstunden auszurechnen. Dazu habe ich erstmal das Old... in 28_08 umbenannt, um eine "Konstante" zu haben mit der man Arbeiten kann. Mein Gedanke dabei war:
"Wenn so die einzelnen Tabellenblätter benannt sind (mit Tag_Monat), dann kann man mittels einer Datumsspalte, in einem anderen Blatt, schneller und einfacher nach dem gewünschten Blatt suchen."
Das funktioniert ja auch noch recht einfach mit folgender Formel (als Beispiel):
Code: Alles auswählen
ISTFEHLER(INDIREKT(ADRESSE(1;1;4;TEXT($A17;"TT")&"_"&TEXT($A17;"MM"))))
Wenn auf diese Weise festgestellt wurde, das z.B. das Blatt 27_08 vorhanden ist, geht es mit der eigentlichen Namenssuche weiter. Dazu habe ich folgende Formel eingesetzt (auch nur als Beispiel).
Code: Alles auswählen
INDIREKT(TEXT($A17;"TT")&"_"&TEXT($A17;"MM")&".C"&WENN($A17<>$A16;7;7+ZÄHLENWENN($A$4:$A17;$A16)-1))
[[
Was vor dem ".C" geschieht, ist recht einfach. Aus der Zelle A17 wird erst der Tag "TT" ausgelesen, dann der Unterstrich "_" gesetzt, und danach aus der gleichen Zelle der Monat "MM" ausgelesen. Und so entsteht der Tabellenname 27_08.
Um aber aus diesem Blatt einen Namen rauszufischen, wird noch die Zelladresse benötigt. Das geschieht nach dem ".C"
Da der Bereich z.B. bei Früh 6 Zeilen umfasst, also von C7 bis C12, habe ich dementsprechend auch einen gleich großen Bereich von 6 Zeilen für die Auswertung erstellen müssen. Da aber das Programm nicht von alleine drauf kommt, wo Start und wo Ende ist, muss jetzt getrickst werden.
In diesem teil der Formel will ich nur eine Zahl ermitteln, um z.B C7 rauszubekommen. Da der ausgabebereich 6 Zeilen umfasst, und die Datumsspalte links daneben jeden Tag 6 mal untereinander anzeigt, steht also eine Zeile davor und danach jeweils ein anderes Datum drin. Es ist also ungleich "<>". Dadurch wird jetzt die 7 zurück gegeben, und ich habe jetzt C7.
Aber eine Zeile tiefer ist das Datum nicht mehr ungleich mit dem jetzigen Datum, und nun will ich C8 rausbekommen. Und da die 8 um 1 größer ist als die 7, muss jetzt das ausgerechnet werden. Dazu zähle ich wie oft das jetzige Datum in dem Bereich von $A$4 bis $A18 vorkommt. In diesem Fall 2 mal. Das ist aber ein mal zuviel, und muss deshalb eins abziehen "-1". Jetzt ergibt 7+1=8, und somit habe ich nun C8. Das ganze wiederholt sich insgesammt 4 mal, dann sind die 6 Zeilen abgearbeitet.
Ach ja! Bin vergesslich.
Die Formel besteht aus zwei Teilen, und dementsprechend habe ich zwei erarbeitete Ergebnisse.
Der erste Teil liefert 27_08
Der zweite Teil liefert .C7
Und so eribt sich jetzt folgende Adresse
27_08.C7
Und damit wird der Zellinhalt aus dem Tabellenblatt 27_08 aus der Zelle C7 ausgegeben, egal ob da was drin steht, oder nicht.
So weit! So gut!
Das funktioniert alles wunderbar.
ABER!!!!
Wenn ich das für ein ganzes Jahr mache, und dabei jeden Tag 6 mal aufführe(ergibt 2196 Zeilen), und das für jede Schicht wiederhole (also insgesammt 10 mal, inklusive Service) dann Explodiert die Dateigröße auf ca. 240 KB, und damit ist hier für den Anhang viel zu groß.
Das ist aber noch nicht mal das schlimmste, denn das ist nämlich der enorme Rechenaufwand den Calc da zu leisten hat.
Mein System:
AMD XP2,2GHz
RAM 756 MB
Zeitmessungen:
Datei öffnen = 1 minute 15 sekunden.
Automatisches zwischenspeichern für AutoWiederherstellungsInfo = auch so ca. 1 minute.
Datei erstspeichern = ca. 45 sekunden.
Wenn Du sie dir trotzdem mal anschauen willst, musst du sie dir bei der datenschleuder downloaden. Hier der Dl-Link:
SCHICHTPLAN_Einzelblätter-abfragen
Im anhang befindet sich eine abgespeckte Version davon.
Bitte verzeih, wenn ich durcheinander schreibe, aber ich hab jetzt einfach zu lange daran gesessen, um noch sortiert zu schreiben.
Technisch gesehen ist mit Formellösungen vieles machbar. Aber um ehrlich zu sein, muss ich sagen das nicht alle eure Wünsche so einfach umzusetzen sind. Ich weiss ja nicht wie ihr das bis jetzt mit Excel gehandhabt habt, aber irgendwo müssen noch nicht erprobte wünsche gegenüber dem technisch machbaren hinten angestellt werden.
Will damit z.B. sagen, dass es aus rein programmiertechnischen gründen besser ist, nicht jeden Tag ein neues Tabellenblatt für den aktuellen Tag einzufügen. Denn so muss jedesmal erst überprüft werden, ob ein bestimmtes Blatt vorhanden ist, oder nicht. Und das geht mit der Zeit in die selbige.
Mag sein das ich irgendwann und irgendwo etwas missverstanden habe, aber darüber denke ich heute nicht mehr nach. Denn ich will in die Heia und Bubu machen.
balu
[edit]
In dieser Datei sind doch mehr als nur 5 Blätter hinzugekommen.