Gefilterte Anzeige eines Rechenblattes

Von Thomas Kaegi. | 13 Dezember, 2017 - 19:22
Kurzbeschreibung:

Von einer Tabelle sollen nur diejenigen Zeilen angezeigt werden, die in einer bestimmten Spalte einen bestimmten Wert enthalten. Es werden 2 Lösungen mit AppleScript angeboten:
Lösung 1: Die abzusuchende Spalte ist im AppleScript fest vorgegeben
Lösung 2: Die abzusuchende Spalte kann mit einem Knopf gewählt werden, wobei die möglichen Suchwerte automatisch ermittelt werden
Den Anstoss zu diesem Beitrag gab die Frage
http://experts.ragtime.de/experts/node/3896

Ausführliche Beschreibung:

Lösung 1:
Die möglichen Suchwerte sind im Knopf "K Auswahl" fest vorgegeben. Im AppleScript ist die Spalte, in welcher der Wert gesucht werden soll, ebenfalls fest vorgegeben. Die Spaltenreferenz in der entsprechenden Scriptzeile (durch Kommentar gekennzeichnet) ist ggf. anzupassen. Das Script wird mit dem Knopf "K Filtern" aufgerufen, in welchem zuerst wieder alle Zeilen des Rechenblattes eingeblendet und danach diejenigen Zeilen ausgeblendet werden, die dem Suchkriterium nicht(!) entsprechen. Mit dem Knopf "K Alles" wird ein anderes Script aufgerufen, mit dem alle ausgeblendeten Zeilen zur Anzeige gebracht werden. Dieses Script ist auch in Lösung 2 genau gleich vorhanden. NB: In Lösung 1 kann das AppleScript nicht mit Datums-Spalten umgehen!

Lösung 2:
Hier wird zuerst mit dem Menüknopf "K Spalte" die Spalte ausgewählt, in welcher nach einem bestimmten Wert gesucht werden soll. Der Hauptteil der Formel in Zelle B1 des Rechenblattes "R Spalte" wird dank der Wenn-Formulierung nur ausgeführt, wenn eine andere Spalte ausgewählt wird. Die Formel speichert zuerst den neuen Wert der Spaltenwahl in Zelle B2, löscht dann alle Werte in Spalte A des Rechenblattes – mittels eines Suchlaufs, damit die Erweiterung "Martin's Power Functions" nicht zwingend benötigt wird, wo es mit dem Befehl "BereichLöschen" viel einfacher zu machen wäre – und trägt dann in Spalte A alle in der gewählten Spalte vorkommenden Werte ein. Diese Werte werden nach wenigen Augenblicken durch den Knopf "K Auswahl" im Menü "Auswahl" angeboten. In Zelle B3 wird durch eine einfache Formel der die gewählte Spalte kennzeichnende Buchstabe (Spaltenindex) ermittelt, der danach im AppleScript gebraucht wird.

Das Script "Auswahl anzeigen" wird mit dem Knopf "K Filtern" aufgerufen, in welchem zuerst wieder alle Zeilen des Rechenblattes eingeblendet und danach diejenigen Zeilen ausgeblendet werden, die dem Suchkriterium nicht(!) entsprechen. Diese Suche ist aus zwei Gründen etwas komplizierter als in Lösung 1, erstens weil ja die abzusuchende Spalte variabel ist und zweitens, da hier auch Spalten gewählt werden können, die Datum-Werte enthalten. Der mit dem Menüknopf "Auswahl" gewählte Wert wird in Zelle B4 eingetragen und ggf. (try-Funktion) von Text, wie er vom Knopf geliefert wird, zu einem Datum umgewandelt. Auch der zum Vergleich herangezogene Wert aus der Tabelle "R Tab" wird zuerst in die Zelle B5 abgelegt. Der Vergleich erfolgt schliesslich zwischen Zelle B4 und B5. Das Script kann mit Tabellen mit bis zu 16000 Zeilen und den Spalten A bis Z umgehen, ohne dass Änderungen erforderlich sind.
(Es ist durchaus möglich, dass es für das Problem des Datumsvergleichs eine einfachere Lösung gibt, also ohne die Zwischenspeicherung in den Zellen B4 und B5. Aber ich bin kein AppleScript-Guru und bin zufrieden, wenn ich eine funktionierende Lösung gefunden habe.)

Aufgepasst: Für beide Lösungen gilt: die nicht angezeigten Zeilen sind nur ausgeblendet. Die Werte in ausgeblendeten Zeilen werden also z.B. bei Summen mit einbezogen und nicht "ausgeblendet". Auch beim Kopieren eines Rechenblattbereichs mit ausgeblendeten Zeilen werden die ausgeblendeten Zeilen mitkopiert!

Kleines Bild (250 * 250):
Gefilterte Anzeige eines Rechenblattes
Großes Bild (bis 800 * 800):
Gefilterte Anzeige eines Rechenblattes
Anhang Größe
Filtern 1.rtd 33.19 KB
Filtern 2.rtd 231.16 KB