Risposte:
Puoi usare la sort()
funzione per quello, ma devi avere i tuoi dati in un posto e una copia ordinata automaticamente di quei dati in un altro posto.
Ad esempio, supponiamo di avere Sheet1 con i miei dati:
| A | B | C
=====================
1 | This | this | 2
2 | Is | is | 1
3 | Test | test | 3
Quindi in Sheet2, cella A1, vorrei inserire questa funzione:
= ordina (Foglio1! A: C, 3, VERO)
Ciò mostrerebbe i miei dati, ma ordinati per colonna C (la terza colonna), in ordine crescente.
| A | B | C
=====================
1 | Is | is | 1
2 | This | this | 2
3 | Test | test | 3
È anche possibile utilizzare gli script di Google Apps per ottenere l'ordinamento automatico sul posto dei dati.
Questo potrebbe essere più difficile da ottenere e più soggetto a errori (continuerei a cercare la soluzione di William Jackson, +1 BTW), ma ho pensato che fosse abbastanza interessante da mostrare.
Ho un foglio che assomiglia a questo:
Ho aggiunto un nuovo script, usando questi passaggi:
nella finestra del codice vuoto che appare, incolla il seguente codice, che verrà eseguito automaticamente ogni volta che una cella viene modificata:
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 } );
}
}
tornare al foglio e iniziare a giocare con i valori per vedere l'ordinamento del tavolo automaticamente ogni volta
Nota:
Nello script sopra,
4
rappresenta l'indice della colonna D (la Value
colonna - l'on che verrà ordinato)"B3:E9"
rappresenta l'intervallo della tabella (esclusa la riga di intestazione)Molto probabilmente la tua tabella differirà dalla mia, quindi questi valori dovrebbero essere adeguati di conseguenza.
null
per il event
parametro, che altrimenti viene popolato correttamente dall'infrastruttura di Google Spreadsheet quando viene attivato un evento reale.
range.sort
riga come questa: range.sort( { column : columnToSortBy, ascending: false } );
. Per ulteriori opzioni di ordinamento, consultare developers.google.com/apps-script/class_range#sort
Ecco uno script generico che si ordinerà automaticamente in base alla prima colonna e presuppone una riga di intestazione.
Per creare uno script:
Nella finestra del codice vuota, incolla il seguente codice, che verrà eseguito automaticamente ogni volta che una cella viene modificata:
// 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();
invece di quello che è qui.
Un'altra opzione senza uno script è:
=QUERY(A1:C3,"SELECT * ORDER BY C")
L'intervallo è limitato (A1: C3) perché nel punto in cui l'ordine è crescente verranno visualizzate per prime le voci vuote.
SELECT * WHERE C <> '' ORDER BY C
per ignorare le voci vuote, quindi è possibile utilizzare un intervallo sufficientemente ampio da includere tutte le righe correnti e future.
Volevo ordinare per colonna di menu a discesa e poi per data.
Per fare ciò, modifica la riga "range.sort" di uno dei frammenti di codice di Cristian o geekspotz in questo modo:
// 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}]);
La differenza sta nell'aggiungere le parentesi dritte attorno all'intera istruzione (array) e separare gli ordinamenti tramite virgole.
Modifica del codice di ordinamento estratta dalla risposta di Stack Overflow di Serge qui : Ordinamento automatico su fogli
Fogli Google ha filtri proprio per questo motivo e non richiede di creare un nuovo foglio nel documento.
Documentazione: https://support.google.com/docs/answer/3540681
;
ad es.= sort(Sheet1!A:C; 3; TRUE)