In einer Tabelle bestimmte Einträge suchen

Von Thomas Kaegi. | 12 Juni, 2015 - 22:29
Kurzbeschreibung:

Mit einem Auswahlmenü kann aufgrund ihres Titels die Spalte ausgelesen werden, in welcher gesucht werden soll; in einem Eingabefeld wird der zu suchende Wert eingegeben; in einer zweiten Tabelle werden die Zeilen aus der ersten Tabelle übernommen, die dem Suchkriterium entsprechen. Beispiel mit verschachtelten Suchläufen.

Ausführliche Beschreibung:

Das Beispiel ist die Lösung für die unter

http://experts.ragtime.de/experts/node/3712

beschriebenen Problemstellung. Alles ist in einem Layout angeordnet. In einer Ausgangstabelle (R Tab) sind Personendaten festgehalten. Die Spalten sind in Zeile 1 mit Titeln überschrieben. Die Formeln im Dokument erlauben die Benützung der Spalten A:Z und der Zeilen 2:1000.

Im Auswahlmenü-Knopf (K Auswahl) werden die Titel aller benützten Spalten angezeigt. Mit diesem Knopf kann somit ausgelesen werden, in welcher Spalte gesucht werden soll. Der in dieser Spalte zu suchende Begriff wird im Feld A1 der Tabelle "R Suchen" eingegeben. Die Formeln befinden sich in den Zellen A2 und A3 dieses Rechenblattes. Dieser Teil des Rechenblattes ist unten im Layout sichtbar.

Das Suchergebnis wird in einer zweiten Tabelle (R Resultat) festgehalten.
Die Suche wird durch Klick auf den Knopf "R Auslösen" gestartet. Mit diesem wird die Steuerzelle C2 auf 1 gesetzt.

Die Formeln:

Zelle A2:
SpezialWenn($C$2=1;SetzeZelle(2;$C$2)&VSuchlauf(R Resultat!$A$2:$A1000;1;;HSuchlauf(R Resultat!$A$2:$Z$2;1;;SetzeZelle("";R Resultat!$A$2:$Z$1000;LfdIndex(1);LfdIndex))))

Die Formel wird ausgeführt, wenn die Steuerzelle C2 den Wert 1 enthält und sie erhöht diesen Wert auf 2. Ein vertikaler Suchlauf läuft über alle Zeilen von 2 bis 1000. Auf jeder Zeile wird ein horizontaler Suchlauf ausgeführt, der über die Spalten A:Z läuft. Jede der so adressierten Zellen wird mit dem SetzeZelle-Befehl gelöscht. Dies ist erforderlich, damit nicht ein Eintrag aus einer vorangehenden Suche in der Tabelle stehen bleibt. – Mit der Erweiterung "Martin's Power Functions" könnte dies einfach mit einem LöscheBereich-Befehl gemacht werden.

Zelle A3:
SpezialWenn($C$2=2;SetzeZelle("";$C$2)&VSuchlauf(R Tab!$A$2:$Z$1000;$A$1=Index(R Tab!$A$2:$Z$1000;LfdIndex;K Auswahl!X);;HSuchlauf(R Tab!$A$2:$Z$1000;1;;SetzeZelle(Index(R Tab!$A$2:$Z$1000;LfdIndex(1);LfdIndex);R Resultat!$A$2:$Z$1000;LfdZähler(1);LfdIndex))))

Diese Formel wird ausgeführt, wenn die Steuerzelle C2 den Wert 2 enthält und sie löscht diese Zelle.
Auch hier läuft ein vertikaler Suchlauf über die Zeilen 2 bis 1000. Ein horizontaler Suchlauf wird aber nur ausgeführt, wenn in der mit Knopf "K Auswahl" gewählten Spalte der Wert steht, der im Suchfeld eingegeben wurde. In diesem Fall wird mit dem horizontalen Suchlauf, der die Spalten A:Z umfasst, jede Zelle aus Rechenblatt "R Tab" in die entsprechende Zelle des Rechenblattes "R Resultat" übertragen. Die Zeile in dieser zweiten Tabelle wird durch den Index der Treffer (LfdZähler) bestimmt.

Kleines Bild (250 * 250):
In einer Tabelle bestimmte Einträge suchen
Großes Bild (bis 800 * 800):
In einer Tabelle bestimmte Einträge suchen
Anhang Größe
Suchen.rtd 240.6 KB