Sortiert oder nicht sortiert? 5

Artikelbild-221
Zwei Möglichkeiten, wie man per Formel eine Liste auf ihre Sortierung prüft.
 

Der Umgang mit Listen gehört zum täglichen Brot des geplagten Excel-Anwenders. Das Programm bietet dafür auch viele Hilfsmittel: Filter, diverse Sortier- und Gruppierungsfunktionen etc.

Wie man eine Liste nur mit Hilfe von Formeln automatisch sortieren kann, habe ich schon vor längerer Zeit in einer dreiteiligen Artikelserie beschrieben (Teil 1, Teil 2 und Teil 3).

Was ist aber, wenn du vielleicht nur herausfinden möchtest, ob eine Liste überhaupt sortiert ist oder nicht? Auch das lässt sich mit Hilfe von ein paar kleinen Formeln einfach feststellen.

Und so geht’s:

Möglichkeit 1: Die Hilfsspalte

Nehmen wir eine einfache Namensliste (die Beispieldatei kannst du dir hier herunterladen). Links im Bild die unsortierte Liste, rechts die identische Liste, diesmal jedoch alphabetisch sortiert.

Zwei gleiche Listen: Sortiert und unsortiert

Zwei gleiche Listen: Sortiert und unsortiert

Wie findet man nun per Formel heraus, ob eine Liste sortiert ist oder nicht?

Dazu prüft man in einer Hilfsspalte einfach, ob der Name in der aktuellen Zeile größer oder gleich dem vorhergehenden Namen ist. Dabei beginnen wir erst in der zweiten Zeile der Tabelle:

Hilfsspalte mit einer einfachen Vergleichsformel

Hilfsspalte mit einer einfachen Vergleichsformel

Die Formel liefert WAHR, wenn der Name größer oder gleich dem Vorgänger ist und FALSCH, wenn das nicht der Fall ist. Excel erkennt also nicht nur bei Zahlen die Vergleichsoperatoren „Größer“ oder „Kleiner“, sondern ganz offensichtlich auch beim Alphabet und damit bei Wörtern.

Wenn man die Formel dann bis ans Ende der Tabelle und zur Kontrolle auch gleich in die Spalte neben der sortierten Tabelle kopiert, erkennt man schnell das Muster:

Der Unterschied zwischen sortiert und unsortiert

Der Unterschied zwischen sortiert und unsortiert

Sind also alle Werte WAHR, dann ist die Liste sortiert. Bei einer kleinen Liste sieht man das noch mit bloßem Auge, bei einer sehr langen Tabelle hilft eine Formel. Man muss letztlich nur prüfen, ob alle Werte in Spalte B (bzw. Spalte F) WAHR sind. Genau das macht die UND-Funktion:

=UND(B5:B33)

Das Gesamtergebnis in einer Formel

Das Gesamtergebnis in einer Formel

Wenn alle Argumente WAHR sind, liefert auch die UND-Funktion den Wert WAHR. Sprich: Die Liste ist sortiert. Sobald auch nur ein Wert FALSCH ist, liefert auch UND den Wert FALSCH, die Liste ist also unsortiert.

Hilfsspalten sind also ein sehr praktisches Mittel, aber eben auch etwas umständlich. Dennoch haben sie ihre Berechtigung, denn es lässt sich leicht nachvollziehen, wie das Ergebnis zustande kommt.

Möglichkeit 2: Eine Matrixformel

Wesentlich eleganter lässt sich das Problem mit einer einzigen Matrixformel lösen.

(Falls du bei dem Wort „Matrix“ jetzt zusammenzuckst, empfehle ich dir die beiden Einsteiger-Artikel dazu: Ab in die Matrix: Eine kleine Einführung in Array-Formeln und Die Matrix Reloaded)

Die Formel ist an Schlichtheit kaum zu übertreffen:
{=UND(A5:A33>=A4:A32)}

Wie bei allen Matrix- oder Array-Formeln gilt auch hier: Die geschweiften Klammen dürfen nicht von Hand eingetippt werden. Stattdessen muss die Eingabe zwingend mit der Tastenkombination Strg+Umschalt+Eingabe abgeschlossen werden!

Ohne Hilfsspalte: Eine Matrixformel

Ohne Hilfsspalte: Eine Matrixformel

Die Formel macht nichts anderes, als das, was wir oben mit der Hilfsspalte gemacht haben. Nur eben in einem Rutsch. Du kannst das sogar noch leichter nachvollziehen, wenn du den inneren Teil der Formel in der Bearbeitungszeile markierst und dann die F9-Taste drückst:

Mit F9 die Berechnung anzeigen

Mit F9 die Berechnung anzeigen

Dadurch werden die einzelnen Vergleiche aufgelöst und die entsprechenden Wahrheitswerte angezeigt (du solltest jetzt aber nicht die Eingabetaste drücken, sonst wird die Formel überschrieben. Stattdessen verlässt du die Bearbeitungszeile mit der ESC-Taste).

Alles in einer schlichten Formel: Ist das nicht ein guter Grund, sich mal näher mit der Matrix zu beschäftigen?

 

Wenn dir der Artikel gefallen hat: Bitte weitersagen!
Das könnte dich auch interessieren:
Und immer daran denken: Excel beißt nicht!

P.S. Die Lösung ist immer einfach. Man muss sie nur finden.
(Alexander Solschenizyn)

P.P.S. Das Problem sitzt meistens vor dem Computer.



Avatar-Foto

Über Martin Weiß

Er ist das Gesicht hinter dem Blog "Der Tabellenexperte". Seit 2013 veröffentlicht er hier Beiträge zu seinem Lieblingsprogramm: Microsoft Excel. Martin Weiß ist zertifizierter Microsoft Excel Expert und verdient sein Geld als selbständiger Excel-Berater, -Entwickler und -Trainer.

Schreibe einen Kommentar zu Martin Weiß Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

5 Gedanken zu “Sortiert oder nicht sortiert?

  • Avatar-Foto
    Andreas Neumann

    Vielen Dank für diese Idee. Die kommt gerade recht, denn ich hatte gerade die Herausforderung, herauszufinden, ob eine Spalte in einer Tabelle, die „lebt“ sortiert ist oder nicht. Also kam eine voll dynamische Formel einschließlich eines Ergebnistextes heraus (die Tabelle heißt „Tab_Test“ und die betroffene Spalte „Test-Titel“):
    {=WENN(UND(BEREICH.VERSCHIEBEN(Tab_Test[[#Kopfzeilen];[Test-Titel]];2;0;ZEILEN(Tab_DocuSubCatStandard[Test-Titel])-1)>=BEREICH.VERSCHIEBEN(Tab_DocuSubCatStandard[[#Kopfzeilen];[Test-Titel]];1;0;ZEILEN(Tab_Test[Test-Titel])-1));“Ist sortiert!“;“Bitte sortieren!“)}

    • Avatar-Foto
      Andreas Neumann

      irgendwie klappt das mit dem Kopieren nicht (bitte alles vorher ignorieren oder noch besser löschen):
      =WENN(UND(BEREICH.VERSCHIEBEN(Tab_Test[[#Kopfzeilen];[Test-Titel]];2;0;ZEILEN(Tab_Test[Test-Titel])-1)>=BEREICH.VERSCHIEBEN(Tab_Test[[#Kopfzeilen];[Test-Titel]];1;0;ZEILEN(Tab_Test[Test-Titel])-1));“Ist sortiert“;“Bitte sortieren!“)

      • Avatar-Foto
        Martin Weiß

        Hallo Andreas,

        danke für Deine Lösung. Ja, das kopieren hier in den Kommentaren führt leider manchmal nicht zu den gewünschten Ergebnissen.

        Schöne Grüße,
        Martin