Odpowiedzi:
Można skorzystać z sort()
funkcji za to, ale trzeba mieć swoje dane w jednym miejscu, a automatycznie sortowane kopię tych danych w innym miejscu.
Powiedzmy, że mam Arkusz1 z moimi danymi:
| A | B | C
=====================
1 | This | this | 2
2 | Is | is | 1
3 | Test | test | 3
Następnie w arkuszu 2, komórka A1, umieściłbym tę funkcję:
= sort (Arkusz1! A: C, 3, PRAWDA)
To pokazałoby moje dane, ale posortowane według kolumny C (trzecia kolumna), rosnąco.
| A | B | C
=====================
1 | Is | is | 1
2 | This | this | 2
3 | Test | test | 3
Możliwe jest także użycie Skryptów Google Apps w celu automatycznego sortowania danych w miejscu.
Może to być trudniejsze do osiągnięcia i bardziej podatne na błędy (nadal wybrałbym rozwiązanie Williama Jacksona, +1 BTW), ale myślałem, że to wystarczająco interesujące do pokazania.
Mam arkusz, który wygląda następująco:
Dodałem nowy skrypt, wykonując następujące kroki:
w wyświetlonym pustym oknie kodu wklej następujący kod, który będzie uruchamiany automatycznie przy każdej edycji komórki:
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 } );
}
}
wróć do arkusza i zacznij bawić się wartościami, aby za każdym razem automatycznie sortować tabelę
Uwaga:
W powyższym skrypcie
4
reprezentuje indeks kolumny D ( Value
kolumna - ta, która będzie sortowana)"B3:E9"
reprezentuje zakres tabeli (wyłączając wiersz nagłówka)Twoja tabela najprawdopodobniej będzie różnić się od mojej, więc te wartości należy odpowiednio dostosować.
null
dla event
parametru, który jest inaczej właściwie zaludnionej przez infrastrukturę arkusza kalkulacyjnego Google, gdy prawdziwy zdarzenia.
range.sort
linię: range.sort( { column : columnToSortBy, ascending: false } );
. Więcej opcji sortowania można znaleźć na stronie developers.google.com/apps-script/class_range#sort
Oto ogólny skrypt, który będzie automatycznie sortował na podstawie pierwszej kolumny i zakłada wiersz nagłówka.
Aby utworzyć skrypt:
W pustym oknie kodu wklej następujący kod, który będzie uruchamiany automatycznie przy każdej edycji komórki:
// 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 } );
}
}
var sheet = SpreadsheetApp.getActiveSpreadsheet();
zamiast tego, co tu jest.
Inną opcją bez skryptu jest:
=QUERY(A1:C3,"SELECT * ORDER BY C")
Zakres jest ograniczony (A1: C3), ponieważ w miejscu rosnącym zamówienia najpierw pojawią się puste wpisy.
SELECT * WHERE C <> '' ORDER BY C
aby zignorować puste wpisy, a następnie użyć wystarczająco dużego zakresu, aby uwzględnić wszystkie bieżące i przyszłe wiersze.
Chciałem posortować według kolumny menu rozwijanego, a następnie według daty.
Aby to zrobić, zmodyfikuj wiersz „range.sort” fragmentów kodu Cristian lub geekspotz w następujący sposób:
// 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}]);
Różnica polega na dodaniu prostych nawiasów wokół całej instrukcji (tablicy) i oddzieleniu sortowania przecinkami.
Modyfikacja kodu sortowania wyciągnięta z odpowiedzi przepełnienia stosu Serge'a tutaj : Automatyczne sortowanie na arkuszach
Arkusze Google mają filtry z tego właśnie powodu i nie wymagają tworzenia nowego arkusza w dokumencie.
Dokumentacja: https://support.google.com/docs/answer/3540681
;
np.= sort(Sheet1!A:C; 3; TRUE)