SVERWEIS mit mehreren Bedingungen

Hallo Zusammen,
ich habe eine Tabelle mit Stammdaten in der Mitgliedsdaten gespeichert sind.
Ein weitere Tabellenblatt kann zu einem Mitglied verschiedene Rollen erfassen.

Es gibt pro Mitgliedsnummer nur ein Eintrag der folgende Bedingungen erfüllt:
Feld Rolle = Anwärter ODER Mitglied ODER Fördermitglied
Feld Ende = leer / blank

Ich möchte diesen Eintrag finden und die Rolle in dem Tabellenblatt 1 bei Status (Spalte N) einfügen.

Vermeintlich klingt das nach einem größeren IF Konstrukt, ich bekomme es aber nicht hin.

Könnt Ihr mir eventuell auf die Sprünge helfen?

Mitgliederverwaltung - Forum.ods (50.3 KB)

Danke für eure Zeit und viele Grüße

Memberships.odb (32.1 KB)

Die angehängte Datenbank (Base-Dokument mit eingebetter HSQLDB) besteht aus 4 einfachen Tabellen:

  1. Mitglieder haben hier erstmal nur einen Namen und eine autom. zugewiesene 5-stellige auto-ID ab 10000. Alle weiteren Attribute sind in dieser Demo erstmal nicht notwendig und machen nur Fleißarbeit.

  2. Die Rollen sind so wie in deiner Calc-Tabelle.

  3. Mitgliedschaften haben eine Mitgliedsnummer, eine Rollen-ID ein Datum, einen monatl. Beitrag und eine auto-ID. Hier werden den Mitgliedschaften die Rollen in zeitlichem Verlauf zugewiesen.

  4. Die Tabelle für die Beitragszahlungen erfasst eine Mitgliedsnr, einen Betrag und die obligatorische auto-ID.

Abfragen sind wie Formeln, nur dass sie komplette Tabellen zurückgeben statt einzelner Werte. Die Abfragen bilden die Grundlage für Formulare und Berichte.

Das Formular “Mitglieder & Zahlungen” komprimiert verschiedene Aspekte der Datenbank in einem Formular.

In der grauen Tabelle kann man Mitglieder auswählen, deren zugehörige Datensätze in den farbigen anderen Bereichen angezeigt werden. Am Ende der grauen Tabelle kann man neue Mitglieder eintragen.

Die gelbe Tabelle erfasst den Fortgang der Mitgliedschaften für das grade ausgewählte Mitglied. Hier trägst du das Änderungsdatum, die neue Rolle und den Monatsbeitrag ein.

Die rote Tabelle zeigt den zeitlichen Verlauf aller Mitgliedsbeiträge für das ausgewählte Mitglied (SOLL-Positionen).

In die grüne Tabelle trägst du mit Datum und Betrag die Zahlungseingänge ein (HABEN-Positionen).

Oberhalb der roten und grünen Tabelle siehst du die Summen von SOLL und HABEN, sowie den Saldo.

Die weiße Tabelle ist eine Ausnahme. Die ist statisch und zeigt die aktuell besetzten Positionen an. Aktuell ist die Position “Kassenprüferin” unbesetzt. Moment, war das nicht mal Nils? Ein Klick auf Nils zeigt, dass er die Position mal hatte, aber am Ende des letzten Jahres ausgeschieden ist.

Diverse “Update”-Schaltflächen sind nur da, weil ich hier keinerlei Makro eingesetzt habe. Standardmäßig werden abhängige Formulare neu berechnet wenn man im Hauptformular (hier: die graue Mitgliederliste) navigiert.

Und dann ist da noch das Formular “Rollen”, wo man links eine Rolle auswählt und rechts den zeitlichen Verlauf der Besetzung bekommt. Derartige Formulare sind denkbar für alle möglichen Zusammenhänge und Aufgaben.

Der Bericht zeigt für alle Mitgliedsbeiträge die Salden <> 0 an. Berichte bringen Datenbankdaten in druckbares Layout in Form eines Writer-Dokuments.

Man kann auch Calc-Zellen mit Datenbankdaten (Abfragen oder Tabellen) verknüpfen.

ok, habe es nun klassisch mit SVERWEIS [VLOOKUP]

Dazu gab es 2 Fallstricke:

Eine Funktionsspalte LINKS von der Rückgabespalte einzufügen, welche die “Bedingungen” Rolle + Ende Verbindet.

Da ich dann aber immer noch auf 3 verschiedene Werte abfrage, brauchte es noch ein Verschachteltes WENN

Das muss so aufgebaut werden das man Fragt ob der SVERWEIS ein #NV ausgibt (ISTFEHLER), denn dieses #NV beendet sonst alle weiteren Berechnungen in der Formel.

Meine Lösung (damit ich sie loswerde).
Mitgliederverwaltung - Forum.ods (58,5 KB)

1 Like

auch eine tolle Lösung, Deine Formel sieht deutlich übersichtlicher aus als meine.

Deine Lösungsformel

=WENNFEHLER(INDEX(Rollen.$G$2:$G$11;VERGLEICH(1&A4;Rollen.$A$2:$A$11;0));"Status nicht definiert")

Deine Hilfsspalte auf Rollen.A

=ZÄHLENWENNS(G2;"Anwärter|.*mitglied";I2;"")&B2

Meine Lösungsformel

=WENN(ISTFEHLER(SVERWEIS(VERBINDEN("";1; A2; C_MG); $Rollen.$A:$K; 7; 0));      WENN(ISTFEHLER(SVERWEIS(VERBINDEN("";1; A2; C_ANW); $Rollen.$A:$K; 7; 0));          WENN(ISTFEHLER(SVERWEIS(VERBINDEN("";1; A2; C_FM); $Rollen.$A:$K; 7; 0));              "-";              C_FM);          C_ANW);      C_MG)

C_xy sind Konstanten als benannte Bereiche auf dem Tabellenblatt Festwerte

Meine Hilfsspalte auf Rollen.A

=VERBINDEN("";1;B2;G2;I2)

Mitgliederverwaltung - Forum - mySolution.ods (60.4 KB)

Das ist nicht die Formel meiner Hilfsspalte, sondern folgende:

=ZÄHLENWENNS(G2;"Anwärter|.*mitglied";I2;"")&B2

1 Like

Danke für den Hinweis, war ein Fehler beim Copy&Paste, habe ich oben angepasst.

Viele Grüße