So sortieren Sie eine Google Sheets-Abfrage nach einer benutzerdefinierten Bestellung

7

Ich habe eine Tabelle mit Chormitgliedern mit einem "Namen" und einer "Sprachtyp" -Spalte. Wie kann ich eine Abfrage schreiben, die sie ordnet, indem die Tonhöhe des Sprachtyps verringert wird (dh Sopran> Alt> Tenor> Bass )?

Gibt es in der Google Query Language etwas Ähnliches wie FIELD () in MySQL ?

Ich habe auch die SORT-Funktion ausprobiert , aber es scheint auch keine Option für die benutzerdefinierte Bestellung zu geben.

törzsmókus
quelle
Ich wünschte, es gäbe eine Möglichkeit, eine solche Sortierung so einzurichten, dass wenn ich auf eine Spalte klicke und zu Daten -> Blatt nach Spalte sortieren gehe ... diese nach meiner benutzerdefinierten Reihenfolge sortiert wird!
Michael

Antworten:

3

Sie können MATCH zu Ihrer SORT für eine benutzerdefinierte Bestellliste hinzufügen.

    Benutzerdefinierte Sortierliste mit Übereinstimmung

Die Formel in D5 lautet:

=ArrayFormula(sort(A$2:A$99,match(left($B$2:$B$99,3),{"sop";"con";"ten";"bas"},0),1))

Nach E5 kopieren. Ohne Geschwindigkeitstests der Berechnungszyklen ist es fraglich, ob die Verwendung der Left-Funktion zum Abziehen der ersten drei Zeichen ernsthaft nachteilig ist, aber das Erstellen und Verwalten des konstanten Arrays für die Suche nach Übereinstimmungsbereichen wird sicherlich einfacher. Achten Sie darauf, dass Sie die ersten drei Zeichen nicht duplizieren, wenn Sie die Liste erweitern.


quelle
Ich habe Probleme, diesen Teil in Ihrer Formel zu verstehen: =match(left($B$2:$B$99,3),{"sop";"con";"ten";"bas"},0).. Ich habe dies alleine ausgeführt und diese Liste erhalten: {1,4,2,3,4,2,3,1} .. aber entsprechend der Sorte docs the sort_columnis: Der Index der Spalte im Bereich oder ein Bereich außerhalb des Bereichs, der die zu sortierenden Werte enthält . Ich kann die beiden einfach nicht in Einklang bringen.
Abbood
6

Erstellen Sie ein neues Blatt in Ihrer aktuellen Tabelle. Fügen Sie zwei Spalten ein:

VoiceType   Sort order
SOPRANO     1
CONTRALTO   2
TENOR       3
BASS        4

Fügen Sie in Ihr Hauptarbeitsblatt (das mit der Liste der Personen) in eine neue Spalte eine Formel wie die folgende ein:

=vlookup(upper(B2),Sheet2!A$2:B$5,2,0)

Beachten Sie, dass ich die UPPER () -Funktion verwendet habe, falls einige der Sprachtypen als "Tenor" oder "Tenor" eingegeben werden.

Hier ist ein Beispiel zu sehen: https://docs.google.com/spreadsheets/d/1s8MngBnoJ53czPOLlBJ3DRAbZHc4JZXd0KPeRBM4_tQ/edit?usp=sharing

MaryC.fromNZ
quelle
2

Eigentlich brauchen Sie arrayformula () nicht, da die Funktion sort () bereits Zeilen und Spalten zurückgibt.

In dem Bild dort oben in D5 (nicht E5, das blaue Rechteck sollte sich im Bild bei D5 befinden) können Sie einfach Folgendes eingeben:

=sort(A2:B99,match(B2:B99,{"SOPRANO","CONTRALTO","TENOR","BASS"},0),1)

Das ist es.

Besonderer Dank geht an Jeeped. Ich habe dies gefunden, als ich mit Ihrer Antwort gespielt habe und die Funktion match () in sort () verwendet habe, die ich vorher nicht kannte.

user3487528
quelle