Angenommen, ich möchte, dass Google Sheets einige Daten automatisch sortiert, z. B. die Spalte C
.
Wie mache ich das?
Ich weiß, dass ich Daten manuell sortieren kann, indem ich mit der rechten Maustaste klicke und Daten sortieren auswähle, aber das ist nicht das, was ich bin suchen nach.
Antwort
Sie können die sort()
-Funktion dafür, aber Sie müssen Ihre Daten an einem Ort und eine automatisch sortierte Kopie dieser Daten an einem anderen Ort haben.
Zum Beispiel Ich habe Sheet1 mit meinen Daten:
| A | B | C ===================== 1 | This | this | 2 2 | Is | is | 1 3 | Test | test | 3
Dann würde ich in Sheet2, Zelle A1, diese Funktion einfügen:
= sort (Sheet1! A: C, 3, TRUE)
Dies würde meine Daten anzeigen, aber nach Spalten sortiert C (die dritte Spalte) aufsteigend.
| A | B | C ===================== 1 | Is | is | 1 2 | This | this | 2 3 | Test | test | 3
Kommentare
- Parameter müssen durch Semikolon getrennt werden
, z.
= sort(Sheet1!A:C; 3; TRUE)
- @Petr Mit Kommas funktioniert das einwandfrei.
- @ user17634: Das hängt von Ihren Ländereinstellungen ab.
- Das Problem bei diesem Ansatz ist, dass Sie Element 3 nicht an Position 1 verschieben können (es dupliziert Element 3).
Antwort
Es ist auch möglich, Google Apps-Skripte zu verwenden, um eine automatische direkte Sortierung der Daten zu erreichen.
Dies ist möglicherweise schwieriger zu erreichen und fehleranfälliger (ich würde mich immer noch für William Jacksons Lösung entscheiden, +1 BTW), aber ich fand es interessant genug, dies zu zeigen.
Ich habe ein Blatt, das so aussieht:
Ich habe ein neues Skript hinzugefügt, indem ich die folgenden Schritte ausgeführt habe:
- Gehen Sie im Menü zu Extras -> Skripteditor …
ein und fügen Sie den folgenden Code ein, der automatisch ausgeführt wird, wenn a Die Zelle wird bearbeitet:
function onEdit(event){ var sheet = event.source.getActiveSheet(); var editedCell = sheet.getActiveCell(); var columnToSortBy = 4; var tableRange = "B3:E9"; if(editedCell.getColumn() == columnToSortBy){ var range = sheet.getRange(tableRange); range.sort( { column : columnToSortBy } ); } }
Gehen Sie zurück zum Blatt und spielen Sie mit den Werten herum, damit die Tabelle jedes Mal automatisch sortiert wird
Hinweis:
In der über dem Skript
- repräsentiert der Wert
4
den Index der Spalte D (die SpalteValue
– die in diesem Fall wird sortiert) - der Wert
"B3:E9"
repräsentiert den Tabellenbereich (ohne die Kopfzeile)
Ihre Tabelle wird höchstwahrscheinlich von meiner abweichen, daher sollten diese Werte entsprechend angepasst werden.
Kommentare
- Ich habe Ihre [bearbeitete] Funktion onEdit ( event) {var sheet = event.source.getActiveSheet (); var editiertCell = sheet.getActiveCell (); var columnToSortBy = 4; var tableRange = “ A2: F99 „; if (editiertCell.getColumn () == columnToSortBy) {var range = sheet.getRange (tableRange); range.sort ({column: columnToSortBy}); }}, aber es wird weiterhin ein Fehler angezeigt: TypeError: Die Eigenschaft “ source “ kann nicht von undefined gelesen werden. (Zeile 2) ist der folgende Code: var sheet = event.source.getActiveSheet (); irgendwelche Ideen? NM, der Fehler wird nur beim Ausführen von der Skriptseite angezeigt, funktioniert jedoch ordnungsgemäß in der tatsächlichen Tabelle
- , es wird jedoch weiterhin ein Fehler angezeigt: TypeError: Die Eigenschaft “ source “ von undefined. (Zeile 2) ist der folgende Code: var sheet = event.source.getActiveSheet (); irgendwelche Ideen? NM, der Fehler wird nur beim Ausführen von der Skriptseite angezeigt, funktioniert jedoch ordnungsgemäß in der eigentlichen Tabelle. Nun frage … seine Sortierung von A bis Z, wie ändere ich sie in die automatische Sortierung von Z-A? danke
- @ drizzt09 Wenn Sie die Methode aufrufen, geben Sie wahrscheinlich
null
für den Parameterevent
an, was ansonsten richtig ist Wird von der Google Spreadsheet-Infrastruktur ausgefüllt, wenn ein reales Ereignis ausgelöst wird. - @ drizzt09 Ändern Sie zum Ändern der Sortierreihenfolge die Zeile
range.sort
wie folgt:range.sort( { column : columnToSortBy, ascending: false } );
. Weitere Sortieroptionen finden Sie unter developer.google.com/apps-script/class_range#sort - @ w0lf Vielen Dank, dass dies perfekt funktioniert hat. Jetzt möchte ich es ergänzen oder eine separate Funktion haben, die genau dieselbe Funktion ausführt, jedoch beim Öffnen oder Aktualisieren. Wenn ich also das Excel-Blatt öffne / aktualisiere, wird die 4. Spalte automatisch absteigend sortiert, genauso wie wenn ich den Code in Spalte 4 mit Ihrem aktuellen Code bearbeite. Danke
Antwort
Eine weitere Option ohne Skript ist:
=QUERY(A1:C3,"SELECT * ORDER BY C")
Der Bereich ist eingeschränkt (A1: C3), da bei aufsteigender Reihenfolge zuerst leere Einträge angezeigt werden.
Kommentare
- Können Sie mir bitte mitteilen, wo ich das einfügen soll?
- Sie können
SELECT * WHERE C <> '' ORDER BY C
Um leere Einträge zu ignorieren, können Sie einen ausreichend großen Bereich verwenden, um alle aktuellen und zukünftigen Zeilen einzuschließen.
Antwort
Here „ist ein generisches Skript, das basierend auf der ersten Spalte automatisch sortiert wird und eine Kopfzeile annimmt.
So erstellen Sie ein Skript:
- Gehen Sie im Menü zu Extras -> Skripteditor …
Fügen Sie im leeren Codefenster den folgenden Code ein, der automatisch ausgeführt wird, wenn eine Zelle bearbeitet wird:
// LinkBack to this script: // http://webapps.stackexchange.com/questions/7211/how-can-i-make-some-data-on-a-google-spreadsheet-auto-sorting/43036#43036 /** * Automatically sorts the 1st column (not the header row) Ascending. */ function onEdit(event){ var sheet = event.source.getActiveSheet(); var editedCell = sheet.getActiveCell(); var columnToSortBy = 1; var tableRange = "A2:T99"; // What to sort. if(editedCell.getColumn() == columnToSortBy){ var range = sheet.getRange(tableRange); range.sort( { column : columnToSortBy, ascending: true } ); } }
Kommentare
- Ich musste
var sheet = SpreadsheetApp.getActiveSpreadsheet();
Anstelle dessen, was ‚ hier ist. - Dies funktioniert hervorragend, aber wie kann ich dies so bearbeiten, dass es nur auf einem einzelnen Blatt in doc sortiert wird?
- ‚ scheint nicht zu funktionieren
Antwort
Usi ng die Skriptlösung, aber nach mehr als einer Spalte sortieren
Ich wollte nach einer Dropdown-Menüspalte und dann nach Datum sortieren.
Ändern Sie dazu die Zeile „range.sort“ der Codefragmente von Cristian oder geekspotz wie folgt:
// Sorts descending by edited column, then ascending by column 1 // Note the use of an array
range.sort([{column: columnToSortBy, ascending: false}, {column: 1, ascending: true}]);
Der Unterschied besteht darin, die geraden Klammern um Ihre gesamte Anweisung (Array) zu setzen und die Sortierungen durch Kommas zu trennen.
Änderung des Sortiercodes aus Serges Stapelüberlauf-Antwort hier : Automatische Sortierung auf Blättern
Antwort
Hier habe ich eine erstellt Skript und Tabellenkalkulation zum automatischen Sortieren (es erfordert ein wenig Arbeit am Blatt, ein Kopieren, Einfügen des Codes und das Festlegen Ihrer Bereiche. Es basiert auf einer Antwort mit mehreren Stapelaustauschen
https://docs.google.com/spreadsheets/d/1LDohwCuy8HZg4YCQEOuWmgpY_WG2BVh_aH-i4JGM5BE/edit#gid=0
Der Datensatz und der Wert des Bereichs, auf den Sie sich bei der letzten Bearbeitung konzentrieren, vergleichen ihn jetzt mit dem Wert nach der tatsächlichen Bearbeitung und wenn anders sortiert es die Tabelle.
Antwort
Google Sheets hat Filter aus genau diesem Grund und tut Sie müssen kein neues Blatt in Ihrem Dokument erstellen.
Dokumentation: https://support.google.com/docs/answer/3540681
Antwort
Dies kann mit Google App Script erfolgen. Das Skript sortiert automatisch, wenn sich die Blattdaten ändern.
In Ihrem Google Sheet:
Wählen Sie Extras -> Skripteditor, fügen Sie das folgende Skript ein und speichern Sie es.
Ersetzen Sie die Variablen SHEET_NAME, SORT_DATA_RANGE und SORT_ORDER durch entsprechende Werte.
SHEET_NAME = "Sheet1"; SORT_DATA_RANGE = "A1:C999"; SORT_ORDER = [ {column: 3, ascending: false}, // 3 = column number, sorting by descending order {column: 1, ascending: true}, // 1 = column number, sort by ascending order {column: 2, ascending: true} ]; function onEdit(e){ multiSortColumns(); } function multiSortColumns(){ var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName(SHEET_NAME); var range = sheet.getRange(SORT_DATA_RANGE); range.sort(SORT_ORDER); ss.toast("Sort complete."); }
Quelle: https://www.idiotinside.com/2018/06/08/sort-multiple-columns-google-sheets-apps-script/