Hallo Sigurd,
sorry, aber meine Zeiteinteilung ist momentan etwas chaotisch. Hatte diesen Beitrag schon fast fertig, blos noch nicht gepostet.
Die Modifizierungen im einzelnen.
zu 2.)
Du hattest in der Hilfsspalte UND in der "Bedingten Formatierung" Berechnungen angestellt. Und das habe ich jetzt komplett verworfen. Jetzt wird alles auf einmal in einer Zelle ausgeführt. Dazu habe ich die Formel WAHL eingesetzt. Das genügte mir aber noch nicht, da mir die Abfrage der Feiertage nicht so richtig gefiel. Und deshalb habe ich da die Formel SUMMENPRODUKT eingesetzt. Und als fertige Formel sieht das nun so aus.
Code: Alles auswählen
=WAHL(WENN(UND(WOCHENTAG(A35)=7;SUMMENPRODUKT($Feiertagsliste.$A$8:$A$143=A35;$Feiertagsliste.$G$8:$G$143=1));1;WENN(UND(WOCHENTAG(A35)=1;SUMMENPRODUKT($Feiertagsliste.$A$8:$A$143=A35;$Feiertagsliste.$G$8:$G$143=1));2;WENN(SUMMENPRODUKT($Feiertagsliste.$A$8:$A$143=A35;$Feiertagsliste.$G$8:$G$143=1);3;WENN(WOCHENTAG(A35)=7;4;WENN(WOCHENTAG(A35)=1;5;6)))));1;2;3;4;5;"")
Was passiert da jetzt!?
WAHL gibt Intern eine Indexzahl nach einer Überprüfung aus, die dann anschließend abgearbeitet wird. Ein einfaches Beispiel (ohne Fehler abfangen):
=WAHL(A2;"1.INDEX";"2.INDEX";"3.INDEX")
Auch wenn es nicht sofort zu erkennen ist, ist nur die Zelle A2 dafür verantwortlich wie es weitergehen soll. Denn wenn man jetzt dort eine
1 eingibt, dann wird "1.INDEX" ausgegeben.
Und bei 2 -> "2.INDEX",
und bei 3 -> "3.INDEX".
Beim aufbau einer WAHL-Formel ist zu beachten, das die Reihenfolge der Überprüfung mit dem Ergebnis übereinstimmt. Nicht das dann ein falscher Wert rauskommt. Wenn man z.B. überprüft ob in A2 eine 2 ist, dann sollte man schon darauf achten das man bei "2.INDEX" anlangt, und nicht bei "3.INDEX". Man muss also nur seine eigene vorher festgelegte Reihenfolge nicht aus den Augen verlieren.
Mit einer WENN-DANN-SONST Abfrage sieht das dann so aus.
Code: Alles auswählen
=WAHL(WENN(A1+1=2;1;WENN(A1+2=4;2;3));"1+1=2";"2+2=4";"hab kein bock zum rechnen!")
Die Funktionserklärung:
Jetzt ist deutlich zu sehen, wo die Intene Indexzahl verarbeitet wird. Und zwar ist das der Bereich nach der ersten öffnenden Klammer "(", bis zu den beiden schließenden Klammern "))". Und warum ist das so!? Weil jede Formelfunktion, egal ob WENN, ODER WOCHENTAG eine öffnende und eine schließende Klammer hat. Und wenn innerhalb einer Formelfunktion verschachtelungen stattfinden, müssen ja am ende dementsprechend mehrere schließende Klammern gesetzt werden. In diesem Fall sind das dann zwei (2).
Wenn A1+1=2, dann ist die Indexzahl gleich 1. Und es wird bei dem Index 1, also bei der Textausgabe von "1+1=2" weitergemacht. Und da ja dort nur der Text ausgegeben wird, ist dann die Formel zu ende.
Wenn jetzt aber A1+1 nicht 2 ist, wird jetzt die nächste WENN abgearbeitet.
Wenn A1+2=4, dann ist die Indexzahl gleich 2. Und es wird bei dem Index 2, also bei der Textausgabe von "2+2=4" weitergemacht. Und da ja dort nur der Text ausgegeben wird, ist dann die Formel zu ende.
Und wenn jetzt auch diese WENN-Abfrage nicht stimmt, dann wird die Indexzahl 3 abgearbeitet. Es wird dann der Text "hab kein bock zum rechnen!" ausgegeben.
Und nun zu SUMMENPRODUKT.
Um es ganz lapidar zu sagen, heisst das. Wenn alle Bedingungen erfüllt sind, dann ist der Wahrheitswert der Formel gleich WAHR (1). Ein einfaches Beispiel.
Im Zellbereich von A1 bis A5 stehen folgende Zahlen: 1_2_3_4_1
Im Zellbereich von B1 bis B5 stehen folgende Buchstaben: A_Ä_B_D_Ä
Das heisst.
A1:A5=1
SUMMENPRODUKT geht nun daher und schaut nach, wo überall in diesem Bereich eine 1 steht.
B1:B5="Ä"
SUMMENPRODUKT geht nun daher und schaut nach, wo überall in diesem Bereich das Ä steht.
Wenn in beiden Fällen jeweils das Suchkriterium 1x vorhanden ist, dann wird eine 1 als Ergebnis ausgegeben. Wenn aber in A2 anstatt eine 2 eine 1 drin steht, dann wird eine 2 zurückgegeben.
Uns jedoch aber interessiert nur der Rückgabewert 1. Denn anstatt wie vorher:
Code: Alles auswählen
=WENN(ZÄHLENWENN(Feiertagsliste.$A$8:$A$143;A35)=1;SVERWEIS(A35;Feiertagsliste.$A$8:$D$143;4;0);"")
zu schreiben, sieht das jetzt so aus.
Code: Alles auswählen
SUMMENPRODUKT($Feiertagsliste.$A$8:$A$143=A35;$Feiertagsliste.$D$8:$D$143=1)
Na ja, nicht genau das gleiche, aber da ja jetzt keine WENN-Abfrage stattfindet, ist es halt ähnlich.
Denn bei der alten Formel musste erst die ZÄHLENWENN-Bedingung erfüllt sein, um einen Wert über SVERWEIS zu bekommen. Und dabei wird jedesmal auf das Datum in A35 zugegriffen, und erst danach der Wert aus der 4.Spalte in der Feiertagsliste zurückgegeben.
Mit SUMMENPRODUKT geschieht das fast parallel zeitgleich, da sie eine Matrixformel ist (ganz grob gesagt). Näheres dazu im Wiki:
http://www.ooowiki.de/CalcFunktionenMatrix/Matrix
Sigurd hat geschrieben:
Bei der Matrixfunktion SUMMENPRODUKT (Feiertage=A35;FeiertagsAuswahl=1) hätte ich eigentlich keinen Wert von 0 und 1 erwartet…
Wenn beide zu überprüfende Werte jeweils einmal vorhanden sind, wird eine 1 ausgegeben. Ist z.B. nur der Feiertag vorhanden, aber keine FeiertagsAuswahl, dann ist das Ergebnis gleich Null (0). Sorry, aber ich krieg das mit dem Erklären momentan nicht so richtig hin.
Änderungsvorschlag:
In der ausgeblendeten Spalte C hast Du "Bedingte Formatierungen" drin.
Ist überflüssig. Bitte löschen. Es erhöht nur den Rechenaufwand. Und je größer ein Projekt, umso schneller macht sich das bemerkbar. Ich spreche aus Erfahrung.
Noch ein Tipp:
Im Dezemberblatt hast Du in A34 folgende Formel stehen.
=DATUM(Deckblatt.$D$52;MONAT(November.A34)+1;1)
Das deutet darauf hin, dass Du die gute Idee hattest ein erstelltes Tabellenblat einfach zu kopieren. Nur ist das so, das Calc automatisch in das richtige Jahr mit den richtigen Monat umrechnet. Wenn Dezember(12) + 1 theoretisch 13 ergeben würde (im gregorianischen Kalender gibt es keinen 13.Monat), macht Calc sofort Januar im darauffolgenden Jahr daraus.
Beispiel:
01.12.2009 + 1 Monat, ergibt automatisch 01.01.2010
Also musst Du für dein Tabellenblatt "Januar plus" dort in A34 keine andere Formel einsetzen.
Das aber nur so am Rande.
Sigurd hat geschrieben:
Alles in Allem ist der Kalender für mich bis jetzt sehr gut geworden, er übertrifft sogar meine damaligen Erwartungen – und das im Fernlehrgang. Ein „Danke schön“ für Deine Hilfestellungen; sie sind sehr gut angekommen!
Danke! Danke! Danke!

Schön zu hören. Ist wirklich ein gutes und schönes gefühl.
Gruß
balu