Hallo, liebe LO-Gemeinde,
ich habe eine Tabellen-Datei mit ca. 25 Tabellenblättern. Dort enthalten
sind die User eines Systems mit ihren Anmeldenamen. Ich habe also
Spalten wie Vorname, Nachname, Code (=Anmeldename).
Ich brauche diese Listen immer wieder mal sortiert nach Nachname,
Vorname. Und dann wieder brauche ich sie sortiert nach dem Code.
Jetzt muss ich immer wieder die entsprechenden Zeilen markieren, Daten,
Daten sortieren wählen, angeben, dass ich Spaltenüberschriften habe und
schließlich angeben, wonach sortiert werden soll.
Weil ich das immer wieder hin- und her brauche, also mal nach Namen, mal
nach Code sortiert, und weil ich viele Tabellen habe, ist das insgesamt
mühsam. Gibt es eine gute Möglichkeit, das abzukürzen?
Ich bin kein Makro-Fan und kenne mich da nicht aus, fürchte aber, dass
Makros evtl. eine Möglichkeit wären.
Wäre eine Möglichkeit; aber da du schrubst, du brächtest das immer
wieder, mit wehcslender 'Besetzung', wäre eine IMHO bessere Lösung, die
diversen Sortierungen permanent in einem zweiten Tabellenblatt (oder
notfalls auch hinter den Originaldaten) aufzulisten.
Du benötigst je Sortierfolge eine Hilfsspalte und die benötigte(n)
Ausgabespalte(n). Und Voraussetzung ist, dass du im /Voraus/ einen (für
alle Eventualitäten ausreichend großen) Datenbereich für die
Ausgangsdaten festlegst. Am besten markieren (farbig abgesetzt, oder
durch Umrandung o. ä.), damit dir auffällt, wenn du wider Erwarten den
Bereich doch sprengst.
Die Formel der Hilfsspalte zum Sortieren nach Spalte A (bei einem
angenommenen Bereich von A1:A100) lautet:
=WENN(A1=""; ""; SUMMENPRODUKT((A$1:A$30 <
A1))-ANZAHLLEEREZELLEN($A$1:$A$30))
und die Ausgabespalte (angenommen, obige Hilfsspalte läge in Splate K)
lautet:
=WENN(K1="";"";VERSCHIEBUNG($A$1;VERGLEICH(ZEILE()-1;$K$1:$K$100;0)-1;0))
Das Summenprodukt liefert im Prinzip nur die Anzahl der Werte zurück,
die kleiner sind (für Zahlen gebe es dafür die Funktion RANG, für Texte
muss man sich so behelfen).
Die Funktion ANZAHLLEEREZELLEN hab ich hinzugefügt, damit du auch
Leerzeilen mit verarbeiten kannst, und nicht nicht bei jeder kleinsten
Änderung den Datenbereich jedesmal neu anpassen musst.
Der VERGLEICH dient dazu, die Zeile im Ausgangsbereich zu ermitteln, in
der der Wert für die aktuelle Zeile steht, und VERSCHIEBUNG holt diesen
Wert in die aktuelle Zelle.
Und das WENN am Anfang dient dem Ausblenden von Leerzeilen.
Wolfgang