[GELÖST]Sortierung von Einträgen aus Tabelle 1 in andere Tabellen anhand mehrerer Kriterien

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

j4g0
Beiträge: 8
Registriert: Mi, 18.05.2016 10:37
Wohnort: Essen

[GELÖST]Sortierung von Einträgen aus Tabelle 1 in andere Tabellen anhand mehrerer Kriterien

Beitrag von j4g0 »

Hi Leute,

ich mache gerade meine ersten Gehversuche mit AOo Calc 4.1.2.

http://www.oooforum.de/viewtopic.php?f=3&t=54568 fragt nach Betriebssystem und Dateiformat:
Betriebssystem Windows Multipoint Server 2012 Premium (nicht Admin :-P)
Dateiformat .ods

Ich möchte/soll bauen ein "Kassenbuch". In Tabelle 1 ("Hauptseite") werden Ein- und Ausgaben etc., sowie ein Verwendungszweck und eine Zuordnungsnummer festgehalten.
Ein Eintrag in Tabelle 1 würde also aussehen:
(1.) (Datum) (Einnahmen) (Ausgaben) (Kontostand) (Verwendungszweck) (Zuordnungsnummer) (x) (y)
Weil ich die Zahl der Einträge nicht voraussehen kann, hab ich mir hier im Forum ein Makro gesucht und angepasst (zu meiner Schande muss ich gestehen, dass ich den Link "verlegt" habe und daher keine Credits geben kann :( ) Das Makro ist aber für mein Problem irrelevant (nehme ich an), sodass freiwillige Helfer meine angehängte Datei öffnen, das Makro aber deaktiviert lassen können.

Die Zuordnungsnummer soll sagen, in welche Tabelle der Eintrag übernommen werden soll. Steht also bei der Zuordnungsnummer "02" soll das Ganze in die Tabelle 02. In Tabelle 02 (sowie allen anderen "Nebentabellen") gibt es zu jedem Verwendungszweck ein rudimentäres "Konto".
Tabelle 02 enthält demnach:
(Konto 1 - "Verwendungszweck 01")
(Datum) (Einnahmen) (Ausgaben) (Kontostand)

(Konto 2 - "Verwendungszweck 02")
(Datum) (Einnahmen) (Ausgaben) (Kontostand)

etc.

Wenn ich also nun auf der "Hauptseite" einen Eintrag vornehme mit "Verwendungszweck 01" und der Zuordnungsnummer für Tabelle 2, werden Datum sowie Einnahmen oder Ausgaben in das entsprechende Konto übernommen. Der Kontostand wird da separat berechnet.

Hab nach durchforsten des Forums drei grundsätzliche Lösungsansätze gefunden, von denen ich keinen umsetzen konnte :(
1. Habe versucht, sukzessive eine =VERGLEICH- Funktion aufzubauen. Habe also erst mal eine gebaut, die den Verwendungszweck abgleicht, dann eine, die die Zuordnungsnummer abgleicht und habe dann versucht, die in eine Formel zu kombinieren, mit überschaubarem Erfolg... vor allem habe ich es nicht hinbekommen, für das Ganze die =ISTNV Funktion zu nutzen, um jede Menge #NV zu bekommen...
habe mich dazu hieran orientiert http://www.oooforum.de/viewtopic.php?t=37234

2. Habe versucht, mit =SVERWEIS zu arbeiten, bin aber daran gescheitert, dass ich beiden Kriterien (Verwendungszweck und Zuordnungsnummer) nicht integrieren konnte.
=SVERWEIS(D4;WENN(Hauptseite.H1:Hauptseite.H13=2;Hauptseite.G1:Hauptseite.H13;0);1)
In D4 steht dann der Verwendungszweck, die WENN- Funktion müsste ich dann so hinbekommen, dass die Zuordnungsnummer abgeglichen wird, dabei dann aber nur für die jeweils relevante Zeile arbeitet. Bin gerade unschlüssig, wie ich das vernünftig beschreiben soll. Wenn ich das so eingebe, wie hier, dann prüft die WENN-Funktion ja nur, ob in Hauptseite.H1:13 überhaupt irgendwo "2" vorkommt, das hilft mir ja aber nicht.

3. Habe versucht, mit =INDEX und =VERGLEICH zu arbeiten
http://www.oooforum.de/viewtopic.php?t=37973 & http://www.oooforum.de/viewtopic.php?t=31840 haben mich darauf gebracht, aber waren nicht DAU geeignet, sodass ich an der Umsetzung gescheitert bin.
=INDEX(Hauptseite.C11:Hauptseite.C14;VERGLEICH(E4;Hauptseite.G11:G14;0)) -- funktioniert und gibt mir nach Prüfung des Verwendungszwecks in E4 den passenden Eintrag (in diesem Fall das Datum) aus
=INDEX(Hauptseite.C11:Hauptseite.C14;VERGLEICH(3;Hauptseite.H11:H14;0)) -- funktioniert (bedingt) und gibt mir nach Prüfung der Zuordnungsnummer "3" ebenfalls das passende Datum aus. Mir ist hier schon nicht klar, warum ich die 3 als Wert eingeben muss und nicht einfach auf meine entsprechende Zelle verweisen kann (die ist so formatiert, dass sie die "3" als "03" anzeigt - so auch auf der "Hauptseite"). Wenn ich die beiden Formeln aber mit & verknüpfe (siehe erster Link) dann bekomme ich #Wert!

Nach dem ganzen Rumprobieren sehe ich den Wald vor lauter Bäumen nicht mehr und übersehe mit Sicherheit schon die offensichtlichsten Fehler. Meine Bitten also, könnte mich bitte jemand (im Idealfall begründet :) ) auf einen Lösungsansatz festlegen (vlt. war ich ja bei einem bereits auf der richtigen Spur...) und dann vielleicht sogar sagen, was ich falsch gemacht habe, bzw. ändern/beachten sollte?

Bin mir nicht sicher, ob das soweit nachvollziehbar war, bzw. ob ich relevante Informationen unterschlagen habe.

Schon mal vielen, lieben Dank vorab.
j4g0

- anbei mal die Datei, mit meinen diversen Versuchen, jede "Nebentabelle" mit eigenem Lösungsansatz, ich fürchte, ich habe die bei der Erstellung nicht so entworfen, dass man das besonders gut nachvollziehen kann, hoffe aber, dass es zusammen mit diesem Post funktioniert. Bei Bedarf erstelle ich dazu aber auch gerne Kommentare in der Datei.
Hilfsbedarf.ods
(15.99 KiB) 149-mal heruntergeladen
Zuletzt geändert von j4g0 am Mi, 25.05.2016 17:03, insgesamt 2-mal geändert.
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Sortierung von Einträgen aus Tabelle 1 in andere Tabellen anhand mehrerer Kriterien

Beitrag von balu »

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 :-D.

Also das mit dem Verketten

Code: Alles auswählen

=WENN(R6=S6;INDIREKT(VERKETTEN("Hauptseite.C";R6));"")
kann man auch einfacher machen:

Code: Alles auswählen

=WENN(R6=S6;INDIREKT("Hauptseite.C"&R6));"")
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:

Code: Alles auswählen

INDIREKT("Hauptseite.H"&A6+1&":H200")
Und wenn man kontrollieren will was für ein Bezug dabei rauskommt, dann gibt man einfach in eine Zelle das ein:

Code: Alles auswählen

="Hauptseite.H"&A6+1&":H200"

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.

Code: Alles auswählen

=WENN(ISTNV(HAUPTFORMEL);"";HAUPTFORMEL)
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.

Code: Alles auswählen

INDIREKT("Hauptseite.H"&A6+1&":H200")
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
Dateianhänge
Hilfsbedarf-X9_balu.ods
(22.81 KiB) 88-mal heruntergeladen
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
j4g0
Beiträge: 8
Registriert: Mi, 18.05.2016 10:37
Wohnort: Essen

Re: Sortierung von Einträgen aus Tabelle 1 in andere Tabellen anhand mehrerer Kriterien

Beitrag von j4g0 »

Wow, bin etwas sprachlos und - ich nehme an den Eindruck hattest Du auch bereits - das passiert mir eher selten :-) . Schon allein für die reine Menge an Arbeit, die Du Dir gemacht hast, kann ich ja kaum ausreichend Dank sagen. Was mich noch viel mehr beeindruckt (und dabei ist mir klar, dass Dir die Umsetzung der Logik in Code leicht fällt) ist die gut verständliche Beschreibung. Die logischen Abläufe waren mir im Einzelnen schon klar, aber wenn ich einmal anfange, im trial & error Verfahren zu arbeiten, versäume ich es nicht selten, mal einen Schritt zurück zu treten, um mir die Zusammenhänge vor Augen zu führen. Z.B. bin ich auf die Eingabe der Matrix-Formeln per Ctrl+Shift+Return auch irgendwann im Forum gestoßen und habe tatsächlich irgendwann geschafft, den Vergleich mit zwei Kriterien hinzubekommen, um mir das erste Datum ausgeben zu lassen ... aber da fehlte mir einerseits noch das Error handling und vor allem Dein "Tricksen" um mehrere Einträge zu unterschiedlichen Daten zu realisieren und wer weiß, wie lange ich dann da rumprobiert hätte :-) Nicht zuletzt, weil ich zu Beginn keine Dokumentation angelegt hab und zwischen meinen verschiedenen Ansätzen - mehr oder minder willkürlich - hin- und hergesprungen bin.

Bin Dir wirklich sehr sehr dankbar, für die strukturierte Aufbereitung und sollte nun eigentlich in der Lage sein, die Fleißarbeit zu erledigen. (Hoffe ich lehne mich da jetzt nicht zu weit aus dem Fenster, komm erst morgen dazu, wirklich damit zu arbeiten :-) )
Melde mich dann hoffentlich mit Erfolgsmeldung

Danke und liebe Grüße
j4g0
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Sortierung von Einträgen aus Tabelle 1 in andere Tabellen anhand mehrerer Kriterien

Beitrag von balu »

Hallo j4g0,

Lobhudelei gehört auch manchmal dazu. Und deshalb bin ich wirklich sehr erfreut über deine Worte :D

Nun ja, auch ich habe mal sehr klein angefangen, und das zu Zeiten wo ich noch kein I-Net Anschluß hatte. Also musste die eingebaute Hilfe halt sehr oft herhalten. Nur bei der Fülle an Calc Funktionen hat man da schon sehr zu kämpfen, bis das man die eine oder andere Funktion begriffen hat. Und einige verstehe ich heute noch nicht so richtig, kein Wunder bei der Vielzahl. Und ein Trial & Error gehörte und gehört immer mit dazu.

Und irgendwann hatte ich dann auch I-Net, und konnte dann auf das geballte Wissen aus z.B. diesem Forum zugreifen. Auch wenn ich hier selber nicht so sehr viele eigene Threads gestartet hatte, so konnte ich doch auch sehr viel hier dazu lernen. Ich habe hier wirklich das eine oder andere mir abschauen können, und das dazu gewonne Wissen gebe ich halt dann auch sehr gerne weiter.

An dieser Stelle auch mal wieder ein Danke schön an all die freiwilligen Helfer hier im Forum :D . Denn ohne sie geht gar nix, und mein noch immer Lückenhaftes Wissen (egal im welchem Bereich) wäre um ein vielfaches größer.


So, und nun noch viel Spaß mit deiner Datei.
Schönen Sonntag noch.



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
j4g0
Beiträge: 8
Registriert: Mi, 18.05.2016 10:37
Wohnort: Essen

Re: Sortierung von Einträgen aus Tabelle 1 in andere Tabellen anhand mehrerer Kriterien

Beitrag von j4g0 »

So, hab heute mal angefangen, mit Deiner Tabelle rumzuspielen, bzw. verschiedene Dinge zu testen. Danke nochmal dafür :-)

Einmal ist mir aufgefallen, dass, wenn der erste Eintrag in der Haupttabelle eine Ausgabe ist, die keinen Eingang in die Untertabelle findet. Da das ja aber bei einer Kasse eigentlich nicht der Fall sein kann, ist mir das erst mal egal (Bis sich jemand beschwert :-) )
Was mir darüber hinaus aufgefallen ist, sind Kontobewegungen in einem Konto am selben Datum, die führen zu seltsamen Ergebnissen. (Also an einem Tag 2 Einträge in z.B. "WG" für K01. Werde da nun versuchen, eine Lösung zu finden, die hoffentlich die Formel nicht unnötig aufbläht :lol: wenn (oder falls) ich damit Erfolg gehabt haben werde 8) kann ich den Thread auch hoffentlich auf gelöst stellen.

Bis später
j4g0

Nachtrag:
hatte leider nicht viel Zeit, mich damit auseinanderzusetzen :-( Habe zunächst versucht, die Spalte A in K01, die Du ja in der Formel als drittes Suchkriterium nutzt, so umzugestalten, dass sie bei 2x demselben Datum nicht immer dieselbe Zeile ausspuckt. Damit mein einfacher Lösungsweg funktionieren konnte, musste ich auch dafür sorgen, dass die Zelle oberhalb derer, mit der ich arbeiten wollte, nicht leer war.

Code: Alles auswählen

=WENN(A6="";"";WENN(WENN(B7<>"";VERGLEICH(C$2&D$2&B7;$Hauptseite.$H$1:$H$200&$Hauptseite.$G$1:$G$200&$Hauptseite.$C$1:$C$200;0);"")=A6;A6+1;WENN(B7<>"";VERGLEICH(C$2&D$2&B7;$Hauptseite.$H$1:$H$200&$Hauptseite.$G$1:$G$200&$Hauptseite.$C$1:$C$200;0);"")))
Das klang für mich erst mal garnicht verkehrt, bis mir aufgefallen ist, dass wenn ich dann 3x dasselbe Datum für ein Konto eingebe, ich wieder beim alten Problem lande. Es wird also wieder die erste Zeile, in der die Kriterien gefunden werden ausgespuckt und mein Inkrement geht ins Leere. Ich melde mich also, wenn ich daran verzweifle...
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Sortierung von Einträgen aus Tabelle 1 in andere Tabellen anhand mehrerer Kriterien

Beitrag von balu »

Hallo
Einmal ist mir aufgefallen, dass, wenn der erste Eintrag in der Haupttabelle eine Ausgabe ist, die keinen Eingang in die Untertabelle findet.
Verstehe ich nicht, und kann ich in meiner angehängten Datei -{Hilfsbedarf-X9_balu.ods}- auch nicht nachvollziehen.
Wähle ich in der *Hauptseite* in der Zeile 11 bei Kindernummer (H11) 01 anstatt 02 aus, dann wird mir diser Datensatz im Blatt *Kind 01* im Zellbereich A6:D6 auch angezeigt.
Gebe ich jetzt in der *Hauptseite* in der Zeile 11 bei Ausgaben (E11) z.B. 45 ein, so wird in *Kind 01* in der Zelle D6 die 45 angezeigt.

Wie gesagt, ich verstehe nicht was Du mir da sagen willst. Bitte genauere Erklärung.

Was mir darüber hinaus aufgefallen ist, sind Kontobewegungen in einem Konto am selben Datum, die führen zu seltsamen Ergebnissen. (Also an einem Tag 2 Einträge in z.B. "WG" für K01.
Tja, das wusste ich zu dem Zeitpunkt nicht als ich daran gearbeitet hatte. Bin wohl dabei das zu überarbeiten, aber das kann noch etwas dauern.



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
j4g0
Beiträge: 8
Registriert: Mi, 18.05.2016 10:37
Wohnort: Essen

Re: Sortierung von Einträgen aus Tabelle 1 in andere Tabellen anhand mehrerer Kriterien

Beitrag von j4g0 »

balu hat geschrieben:Hallo

Verstehe ich nicht, und kann ich in meiner angehängten Datei -{Hilfsbedarf-X9_balu.ods}- auch nicht nachvollziehen.
Wähle ich in der *Hauptseite* in der Zeile 11 bei Kindernummer (H11) 01 anstatt 02 aus, dann wird mir diser Datensatz im Blatt *Kind 01* im Zellbereich A6:D6 auch angezeigt.
Gebe ich jetzt in der *Hauptseite* in der Zeile 11 bei Ausgaben (E11) z.B. 45 ein, so wird in *Kind 01* in der Zelle D6 die 45 angezeigt.

Wie gesagt, ich verstehe nicht was Du mir da sagen willst. Bitte genauere Erklärung.
Ok, hab meinen Text noch mal gelesen und wäre daraus auch nicht schlau geworden, sorry. Hat sich aber im Grunde auch erledigt.
Ich hatte Deine Datei runtergeladen und geöffnet. Dann den Eintrag Nr.1 auf "Hauptseite" in eine Ausgabe von 50€ umgewandelt K01 gewählt. Dann hat er mir bei K01 0,- € Einnahmen und 0,-€ Ausgaben angezeigt. Als ich dann aber nochmal auf K02 umgestellt habe, hat er es mir korrekt angezeigt und ein Wechsel zurück auf K01 hat wieder das korrekte Ergebnis gebracht. Wenn der "Fehler" also einmal behoben ist, kann ich ihn nicht mehr rekonstruieren, ohne die Datei neu zu öffnen ... :D Es ist also kein echtes Problem.


balu hat geschrieben: Tja, das wusste ich zu dem Zeitpunkt nicht als ich daran gearbeitet hatte. Bin wohl dabei das zu überarbeiten, aber das kann noch etwas dauern.
Meinte das keinesfalls als Vorwurf und auch nicht als Arbeitsaufforderung :-) Tatsächlich habe ich darüber auch nur erst beim Testen nachgedacht, sodass ich das auch vorher nicht erwähnt habe. Werde mich natürlich bemühen, selbst dafür eine Lösung zu finde. Wie gesagt, bin Dir schon mehr als dankbar für die Hilfe bisher.
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Sortierung von Einträgen aus Tabelle 1 in andere Tabellen anhand mehrerer Kriterien

Beitrag von balu »

Mahlzeit s4g0,

dein Fehler der eigentlich kein Fehler war, war doch ein Fehler. :roll:
Nix verstehen?
Okay, hier des Rätsels Lösung.
Ich hatte da wohl einen Knoten im Hirn, und dadurch ein wenig Bockmist zusammengeformelt. War wohl doch zu sehr im Stress gewesen, nein, nicht wegen dir.

Dein aktuelles Problem mit dem Mehrfachdatum habe ich jetzt auch erledigt, und gleichzeitig meinen Formel-Bockmist beseitigt.

Meinte das keinesfalls als Vorwurf und auch nicht als Arbeitsaufforderung
Nö Du! Als Vorwurf habe ich das auch gar-nie-nie-nicht aufgefasst.
Und eine Arbeitsaufforderung war das ja auch nicht. Denn ich habe dir etwas unausgegorenes gegeben womit nicht gut zu arbeiten ist, aber das hat sich jetzt erledigt.


Änderungen:

Blatt *Kind 01*
Spalte A, und alle anderen ähnliche G, M, S.

A6
Matrixformel.

Code: Alles auswählen

=WENN(ISTNV(VERGLEICH(C$2&D$2;$Hauptseite.$H$1:$H$200&$Hauptseite.$G$1:$G$200;0));"";VERGLEICH(C$2&D$2;$Hauptseite.$H$1:$H$200&$Hauptseite.$G$1:$G$200;0))
Brauch ich wohl nicht viel zu sagen. Außer so viel, das sie jetzt die Zentrale Rolle spielt


A7
Matrixformel.

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="");"";VERGLEICH(C$2&D$2;INDIREKT("Hauptseite.H"&A6+1&":H200")&INDIREKT("Hauptseite.G"&A6+1&":G200");0)+A6)
Eigentlich auch kein großes Problem zu verstehen.
Jedoch ist jetzt neu, das zum Schluß eine addition mit +A6 durchgeführt wird wenn die Suchkriterien zutreffen. Die addition muss sein, da ansonsten der VERGLEICH nur die Indexzeile z.B. aus dem Zellbereich Hauptseite.H11:H200 ausgibt welches z.B. die 1 sein könnte. Doch damit kann ich überhaupt nicht weiter arbeiten und deshalb wird der Wert aus A6 addiert der z.B. 11 sein kann. Und so wird aus 1 + 11 gleich 12, und diese 12 wird dann auch in der Zelle ausgegeben.

Diese Formel geht jetzt runter bis A13.


Und nun normale Formeln, also keine Matrixformeln mehr.

B7

Code: Alles auswählen

=WENN(A7="";"";INDEX($Hauptseite.$B$1:$J$200;A7;SPALTE($B$1)))
Wie zu sehen: Bedeutend kürzer gegenüber früher.
Der Wert aus Spalte A wird jetzt in die feststehende Datenmatrix $Hauptseite.$B$1:$J$200 für die Zeile genommen, dies könnte ja wie eben schon erklärt die 12 sein. Also 12. Zeile und 2. Spalte -{SPALTE($B$1)}- ergeben dann die Zelle Hauptseite.B12 die das Datum enthält.

Diese formel geht von B6 bis B13

Für Einnahmen und Ausgaben (Spalten C und D) ist das die gleiche Formel. Lediglich ändert sich SPALTE().


Das wars auch schon. Damit dürften wohl alle momentanigen Problemer gelöst sein.

Ach ja, noch ne kleinigkeit.
Im Blatt "Hauptseite" habe ich nur zu optischen Kontrollzwecken eine Bedingte Formatierung eingebaut, die nur dann anspringt, wenn WG und 1 (01) zu treffen. Kannst Du hinterher ruhig wieder löschen.

Wünsche dir viel Spaß damit. :D



Gruß
balu
Dateianhänge
Hilfsbedarf-finale_balu.ods
(22.82 KiB) 102-mal heruntergeladen
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
j4g0
Beiträge: 8
Registriert: Mi, 18.05.2016 10:37
Wohnort: Essen

Re: Sortierung von Einträgen aus Tabelle 1 in andere Tabellen anhand mehrerer Kriterien

Beitrag von j4g0 »

Einmal mehr vielen lieben Dank. Hab da nun die restliche Fleißarbeit erledigt, die Spalten, in der die Zeilen "berechnet" werden ausgeblendet und alle Tabellen, bis auf die Hauptseite geschützt, in der Hoffnung, dass da niemand aus Versehen was ändert :D
Das ging allerdings mit der Hauptseite nicht, bedingt durch das Makro, oder wie ich es geschrieben habe. Hilft also nur Hoffen :lol:

LG
j4g0
Antworten