Hallo Ulrike,
ich hoffe Du brauchst im Tabellenblatt *Eingabe* die Werte in der Spalte D nicht, denn die habe ich jetzt mal helöscht.
Matrixformeln sind ja ganz gut und schön, aber die die in der *Bsp1.ods* drin sind, bremsen die Datei bei mir unglaublich aus.
Ich will niemanden verärgern, oder zu nahe treten, aber diese Formeln gefielen mir persönlich nicht. Und deshalb habe ich mir da mal was anderes überlegt.
Doch eines noch vorweg.
Bei meinem Konstrukt muss im Tabellenblatt *Eingabe* jedes Datum für einen Monat mit dem 1. anfangen, also nicht der erste Eintrag 07.08.2016 sondern 01.08.2016, denn sonst funktioniert das ganze nicht.
Warum nicht in jedem Monatsblatt den ersten und den letzten Tag diesen Monats suchen lassen.
In E1
Und in E2
So, und nun muss VERGLEICH im Tabellenblatt *Eingabe* suchen ob überhaupt das Anfangsdatum von diesem Monat vorhanden ist.
Also in G1
Code: Alles auswählen
=WENN(ISTFEHLER(VERGLEICH(E1;$Eingabe.A3:$Eingabe.A13107;0));"";VERGLEICH(E1;$Eingabe.A3:$Eingabe.A13107;0)+2)
Wenn es vorhanden ist wird dort die dementsprechende Zeilennummer ausgegeben, ansonsten bleibt die Zelle leer.
Und in G2 kommt dann folgende VERGLEICH rein.
Code: Alles auswählen
=WENN(G1="";"";VERGLEICH(E2;$Eingabe.A3:$Eingabe.A13107;1)+2)
Wenn es ein Anfangsdatum gibt, dann wird nach dem Enddatum gesucht. Falls aber kein Enddatum vorhanden ist (wie z.B. 30.04.2016), dann wird die Zeile zurückgegeben die das letzte Datum beinhaltet das kleiner dem Enddatum von diesem Monat ist. Und das bedeutet, wenn nur ein Datum von einem Monat vorhanden ist, so wird halt nur diese Zeile mit dem einzelnen Datum ausgewertet.
Und was heißt das jetzt nun?
Beispiel:
Du befindest dich im Tabellenblatt *Jul*, so wird für
Startzeile die 998
und für die
Endzeile die 1005
ausgegeben. Und das sind im Tabellenblatt *Eingabe* die dementsprechenden Zeilen, also von 998 bis 1005, wo sich die Daten für den Monat Juli befinden.
Im Tabellenblatt *Apr* sieht das dann so aus.
Startzeile die 3
Endzeile die 221
Die genannten Formeln befinden sich in jedem Tabellenblatt. Und durch mein Konstrukt wird immer der Datenbereich herausgefunden der zu dem jeweilgen Monatsblatt gehört.
Nun muss jetzt aber die gefundene Zeilennummer aus dem Tabellenblatt *Eingabe* so umgerechnet und angepasst werden, das sie auch in das jeweilige Monatsblatt passt. Denn wie beim Monatsblatt *Jul* zu sehen, sind die Zeilennummern sehr hoch, aber das Monatsblatt fängt ja bei der Zeilennummer 3 an.
Also wird die gefundene Zeilennummer umgerechnet, und wir bleiben auch im Monatsblatt *Jul*.
In I1
Und in I2
Und dadurch wird aus der
Startzeile 998 jetzt die 3
und aus der
Endzeile 1005 jetzt die 10
Das ist aber noch nicht alles, denn jetzt müssen ja die Daten aus dem Tabellenblatt *Eingabe* in das jeweilige Monatsblatt herübergeholt werden. Und da arbeite ich jetzt viel mit INDIREKT.
Und wir bleiben weiterhin im Monatsblatt *Jul*.
Für das Datum.
Code: Alles auswählen
=WENN((ZEILE()>=I$1)*(ZEILE()<=I$2);INDIREKT("Eingabe.A"&ZEILE(A1)+G$1-1);"")
Der Part
besagt nur: Vergleiche ob die aktuelle ZEILE größer oder gleichgroß ist wie die Zahl in I1
und ob die aktuelle ZEILE kleiner oder gleichgroß ist wie die Zahl in I2. Wenn das der Fall ist, dann führe die INDIREKT aus.
Und das Ergebnis wäre dann beispielsweise: Eingabe.A998
Es wird also der Inhalt aus dem Tabellenblatt *Eingabe* aus der Zelle A998 zurückgegeben.
Und jetzt die Nr.
Code: Alles auswählen
=WENN(A3<>"";INDIREKT("Eingabe.C"&ZEILE(A1)+G$1-1);"")
Und nun der Name.
Code: Alles auswählen
=WENN(A3<>"";INDIREKT("Eingabe.B"&ZEILE(A1)+G$1-1);"")
Die letzten 3 genannten Formeln wirst Du aber momentan nur im Monatsblatt *Jun* und *Jul* in den Zellen E3, F3 und G3 finden, damit Du sie dir dort mal in Ruhe anschauen kannst.
Aber in den Spalten A, B und C wirst Du sie dort nicht direkt sehen. Denn da stehen nur die zugeordneten Namen für die Formeln.
Also:
In A3 =Uebernahme_Datum
In B3 =Uebernahme_Nr
In C3 =Uebernahme_Nr
und so weiter bis hin zu der letzten Zeile 1000.
Das hat den Vorteil, das man an einer zentralen Stelle die Formel ändern kann, und schwupp-di-wupp wird das für alle anderen Formeln mit den gleichen Namen übernommen.
Tastenkombi: "Strg" + "F3"
oder
-> Einfügen
-> Namen
--> Festlegen
Das wars erstmal meinerseits.
Gruß
balu
http://www.imagenetz.de/fd5565fb3/Bsp_new_1.5.ods.html