Hallo j4g0,
Du hast dir ja reichlich Mühe gemacht hast, auch mit den verlinken der gefunden Threads. Dafür hast Du dir ein paar Pluspunkte verdient

.
Also das mit dem Verketten
Code: Alles auswählen
=WENN(R6=S6;INDIREKT(VERKETTEN("Hauptseite.C";R6));"")
kann man auch einfacher machen:
Okay, bei so einer kurzen Formel ist es eigentlich fast egal wie rum man es macht. Es schaut aber schon ganz anders aus wenn die Formel bedeutend länger und komplexer wird.
Bevor ich weiter mache noch ein kurzer Warnhinweis.
Egal welche von den eben gezeigten Methode man auch nimmt. Man muss bei Formeln die einen indirekten Bezug enthalten immer höllisch aufpassen. Das man sehr schnell den Überblick verlieren kann ist nicht ausgeschlossen.
Jetzt greife ich mal eine Formel vorweg, die ich nachher noch etwas genauer erkläre.
Code: Alles auswählen
=WENN(ODER(ISTNV(VERGLEICH(C$2&D$2;INDIREKT(VERKETTEN("Hauptseite.H";A6+1;":H200"))&INDIREKT(VERKETTEN("Hauptseite.G";A6+1;":G200"));0));A6="");"";INDEX(INDIREKT(VERKETTEN("Hauptseite.B";A6+1;":J200"));VERGLEICH(C$2&D$2;INDIREKT(VERKETTEN("Hauptseite.H";A6+1;":H200"))&INDIREKT(VERKETTEN("Hauptseite.G";A6+1;":G200"));0);SPALTE($B1)))
Bei der ist es eigentlich schon recht gut zu erkennen, dass das mit dem VERKETTEN ungemütlich wird. Zumal der Name VERKETTEN gleich 5 mal vorhanden ist.
Das geht auch kürzer und etwas übersichtlicher.
Code: Alles auswählen
=WENN(ODER(ISTNV(VERGLEICH(C$2&D$2;INDIREKT("Hauptseite.H"&A6+1&":H200")&INDIREKT("Hauptseite.G"&A6+1&":G200");0));A6="");"";INDEX(INDIREKT("Hauptseite.B"&A6+1&":J200");VERGLEICH(C$2&D$2;INDIREKT("Hauptseite.H"&A6+1&":H200")&INDIREKT("Hauptseite.G"&A6+1&":G200");0);SPALTE($B1)))
Kein einziges mal das Wort VERKETTEN. Und es funktioniert genau so gut wie die unübersichtlichere.
Jetzt ist es auch einfacher zu erkennen was alles zu einem INDIREKT gehört. Dadurch lässt sich die Formel auch leichter mal auseinanderpflücken, wenn man sich die Formel genauer anschauen will.
Beispiel:
Und wenn man kontrollieren will was für ein Bezug dabei rauskommt, dann gibt man einfach in eine Zelle das ein:
So, und nun gehts weiter.
Ich habe in der Datei das Tabellenblatt *Kind 01* so weit fertig, das Du damit schon mal arbeiten kannst. Ich musste aber einige Änderungen und Errgänzungen vornehmen, damit mein System funktioniert.
Als erstes habe ich in der Zeile 2 Systemüberschriften eingefügt. Systemüberschriften deshalb, weil die Formeln darauf zugreifen.
Du hattest dort nur "Kind 01" in 2 Zellen eingetragen. Ich habe das aufgegriffen und ergänzt.
Für Wirtschaftsgeld
B2 = Kind
C2 = 01
D2 = WG
Für Kleidungsgeld
H2 = Kind
I2 = 01
J2 = KG
Für Taschengeld
N2 = Kind
O2 = 01
P2 = TG
Für H-Geld (ich weiß nich was HG bedeuten soll, deshalb H-Geld)
T2 = Kind
U2 = 01
V2 = HG
Da Du ja mit mehreren Suchparametern im Blatt *Tabellenblatt* suchen willst, dient die Systemüberschrift als Suchparameterliste.
Obwohl "Kind" nicht gesucht wird, habe ich es trotzdem mit in die anderen Zellen übernommen, damit Du erkennst das es sich um eine gleichmäßige Spaltenaufteilung handelt.
So! Und ab jetzt wirds kompliziert.
GANZ WICHTIG!
Alle folgende Formeln sind MATRIXFORMELN!
Das heißt: Du darfst die Formel nach der Eigabe NICHT einfach mit Enter beenden, sondern mit der Tastenkombination:
Strg + Shift + Enter
Darauf werden um die Formel Geschweifte Klammern gesetzt, was dann so aussehen kann.
{=A1+B1}
Und wenn Du das mal vergessen hast, dann setze den Text-Cursor (der Schmale senkrechte Strich) einfach in die Formel und bewege ihn um eine Position nach links und betätige anschließend die genannte Tastenkombi.
Auf gar keinen Fall darfst Du von Hand diese Klammern {} setzen!
Mit der folgenden Formel wird das erste Datum rausgefischt.
Code: Alles auswählen
=INDEX($Hauptseite.$B$11:$J$200;VERGLEICH(C$2&D$2;$Hauptseite.$H$11:$H$200&$Hauptseite.$G$11:$G$200;0);SPALTE($B$1)))
Und hier haben wir schon das anwenden von mehreren Suchparametern. In diesem falle 2.
Der erste Suchparameter steht in C$2. Und in C$2 steht die 1, obwohl durch Zellformatierung 01 zusehen ist.
Der zweite Suchparameter steht in D$2. Und in D$2 steht WG.
Gesucht wird der erste Suchparameter in der Spalte H, genauer gesagt im Zellbereich $Hauptseite.$H$11:$H$200.
Und der zweite Suchparameter in der Spalte G, genauer gesagt im Zellbereich $Hauptseite.$G$11:$G$200.
Und bei Übereinstimmung von beiden Suchparametern wird die dementsprechende Indexnummer des Suchbereichs 11 bis 200 zurück gegeben.
So viel zum VERGLEICH.
Jetzt zum INDEX
Ich habe den Bereich für INDEX auf $Hauptseite.$B$11:$J$200 festgelegt, damit es einfacher wird eine bestimmte Spalte davon zu bestimmen. In diesem Falle will ich die 2. Spalte aus dem Bereich haben, da dort das Datum steht. Und deshalb habe ich für den 3. Parameter bei INDEX (für Spalte) einfach SPALTE($B$1) angegeben. Und SPALTE($B$1) gibt 2 zurück.
Da der Bereich $Hauptseite.$B$11:$J$200 für INDEX aus 9 Spalten besteht, ist die 2. Spalte davon der Zellbereich $Hauptseite.$C$11:$C$200. Und jetzt muss nur noch die zuvor gefundene Indexnummer von VERGLEICH auf diesen Zellbereich angewendet werden, und schon haben wir das erste Datum.
Aber Halt! Da fehlt noch etwas!
Stimmt.
Eine Fehlerüberprüfung. Und die kommt jetzt.
Manche machen es sich relativ einfach, in dem sie die eigentliche Formel in eine Fehlerüberprüfungsfunktion einpacken, und dann die gleiche Formel noch mal bei keinem Fehler. Und das würde vom Prinzip aus so aussehen.
Eigentlich gar nicht so verkehrt, zumindest theoretisch. Aber je nach Umfang der HAUPTFORMEL packt man einfach zu viel Ballast in die Fehlerüberprüfung mit hinein, der dort vollkommen überflüssig ist. Ich nenne das schlicht und ergreifen:
Total unüberlegt.
Angewendet an der Datumsformel würde das so aussehen.
Code: Alles auswählen
=WENN(ISTNV(INDEX($Hauptseite.$B$11:$J$200;VERGLEICH(C$2&D$2;$Hauptseite.$H$11:$H$200&$Hauptseite.$G$11:$G$200;0);SPALTE($B$1))));"";INDEX($Hauptseite.$B$11:$J$200;VERGLEICH(C$2&D$2;$Hauptseite.$H$11:$H$200&$Hauptseite.$G$11:$G$200;0);SPALTE($B$1))))
Wenn VERGLEICH keine Übereinstimmung zurück gibt, dann wird ja ein Fehler ausgegeben und die Formel kann nicht den Teil mit INDEX abarbeiten. Also ist nur der Teil mit VERGLEICH für die Fehlerüberprüfung wichtig. Und deshalb sieht die Datumformel erst mal so aus.
Code: Alles auswählen
=WENN(ISTNV(VERGLEICH(C$2&D$2;$Hauptseite.$H$11:$H$200&$Hauptseite.$G$11:$G$200;0));"";INDEX($Hauptseite.$B$11:$J$200;VERGLEICH(C$2&D$2;$Hauptseite.$H$11:$H$200&$Hauptseite.$G$11:$G$200;0);SPALTE($B$1)))
Jetzt haben wir das erste Datum für das Suchkriterium WG. Aber es können ja noch durchaus mehere Datume für das gleiche Kind für WG existieren. Also wie weiter?
Nun, da wird jetzt getrickst.
Die Spalte A ist ja bis jetzt leer, im Tabellenblatt *Kind 01*. Und das machen wir uns jetzt zu nutze.
Da wir in Spalte B ein Datum haben, und in C$2 sowie in D$2 weitere Suchkriterien stehen, machen wir jetzt eine Suchanfrage mit mehreren Suchparametern, also jetzt 3 Stück.
Code: Alles auswählen
=VERGLEICH(C$2&D$2&B6;$Hauptseite.$H$1:$H$200&$Hauptseite.$G$1:$G$200&$Hauptseite.$C$1:$C$200;0)
So sehr viel muss ich ja jetzt wohl nicht mehr dazu sagen. Das wichtigste habe ich ja eben schon erklärt. Nur das jetzt nicht 2 Spalten (Zellbereiche) verglichen werden, sondern 3.
Ja, ja!
Ist schon klar!
Fehlerüberprüfung fehlt.
Aber das ist diesmal ganz easy.
Code: Alles auswählen
=WENN(B6<>"";VERGLEICH(C$2&D$2&B6;$Hauptseite.$H$1:$H$200&$Hauptseite.$G$1:$G$200&$Hauptseite.$C$1:$C$200;0);"")
Mehr brauchts jetzt nicht.
Und wofür ist die Formel?
Sie gibt jetzt die echte Zeilennummer aus dem Tabellenblatt *Hauptseite* zurück, wo die 3 Suchkriterien übereinstimmen. Und das könnte jetzt Beispielsweise die Zeilennummer 12 sein. Also steht im Tabellenblatt *Kind 01* in der Zelle A6 die 12. Und die brauchen wir damit ein neuer Zellbezug mittels INDIREKT erstellt werden kann.
Am Anfang hatte ich ja eine Formel vorweg genommen, die ich jetzt noch mal zitiere.
Code: Alles auswählen
=WENN(ODER(ISTNV(VERGLEICH(C$2&D$2;INDIREKT("Hauptseite.H"&A6+1&":H200")&INDIREKT("Hauptseite.G"&A6+1&":G200");0));A6="");"";INDEX(INDIREKT("Hauptseite.B"&A6+1&":J200");VERGLEICH(C$2&D$2;INDIREKT("Hauptseite.H"&A6+1&":H200")&INDIREKT("Hauptseite.G"&A6+1&":G200");0);SPALTE($B1)))
Es ist zu ersehen, wie sich der indirekte Zellbezug zusammensetzt.
Eine kleine Beispielerklärung.
Wie eben schon erwähnt, könnte jetzt in A6 die 12 stehen. Und dazu wird jetzt noch eine 1 addiert, damit der neue Zellbereich nicht bei H12 anfängt, sondern bei H13.
Und warum die 1 dazu?
Nun, ganz einfach.
Wenn in der Zeile 12 ein gefundenes Datum für die Suchkriterien steht, dann würde ohne die 1 addition der Zellbereich wieder bei 12 anfangen und wieder das Datum aus der Zeile 12 ausgeben, da dies der erste Treffer wäre. Also wird durch die 1 addition der Anfang des Suchbereichs um eine Zeile nach unten versetzt.
Durch die gezeigt Formel ist der Anfang des Suchbereichs dynamisch, er wandert also. Aber das Ende ist feststehend.
Wenn Du jetzt das ganze verstanden hast, dürfte es für dich eigentlich auch kein allzu großes Problem sein die Formeln im Tabellenblatt *Kind 01* für Einnahmen und Ausgaben zu verstehen, da sie im Prinzip identisch sind.
Ich habe jetzt auch mal das Tabellenblatt *Kind 01* kopiert und in *Kind 02* umbenannt, un anschließend in der Zeile 2 die 1 durch 2 ersetzt. Und bis jetzt funktioniert alles einwandfrei. Die Ergebnisse haben sich sofort angepasst.
Bei weiteren Fragen oder Problem, melde dich ruhig.
Ich weiß jetzt blos nicht ob man für das ganze auch den Datenpilot verwenden kann. Ich wollte jedoch für mich mal schauen ob ich das alles mit Formeln hinbekomme. Ich für meinen Teil bin zufrieden. Auch wenn ich beim Thema Geld mir etwas anderes überlegen würde, als so eine einfache Tabelle anzulegen.
Gruß
balu