Come posso fare in modo che alcuni dati su un ordinamento automatico di Fogli Google?

Supponiamo che io voglia che Fogli Google ordini automaticamente alcuni dati, ad esempio la colonna C.

Come posso farlo?

So che posso ordinare manualmente i dati facendo clic con il pulsante destro del mouse e selezionando Ordina dati , ma non è questo che io “m cercando.

Risposta

Puoi utilizzare 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, ad esempio Ho 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, inserisco questa funzione:

= sort (Sheet1! A: C, 3, TRUE)

Questo mostrerebbe i miei dati, ma ordinati per colonna C (la terza colonna), crescente.

 | A | B | C ===================== 1 | Is | is | 1 2 | This | this | 2 3 | Test | test | 3 

Commenti

  • I parametri devono essere separati da punto e virgola

    ad es. = sort(Sheet1!A:C; 3; TRUE)

  • @Petr Per me funziona perfettamente con le virgole.
  • @ user17634: Dipende dalle tue impostazioni locali.
  • Il problema con questo approccio è che non puoi spostare lelemento n. 3 nella posizione dellelemento n. 1 (duplica il n. 3).

Risposta

È anche possibile utilizzare Google Apps Scripts per ottenere lordinamento automatico sul posto dei dati.

Potrebbe essere più difficile da ottenere e più soggetto a errori (preferirei comunque la soluzione di William Jackson, +1 BTW), ma ho pensato che fosse abbastanza interessante da mostrare.

Ho un foglio simile a questo:

foglio con ordinamento automatico

Ho aggiunto un nuovo script, utilizzando questi passaggi:

  • nel menu, vai a Strumenti -> Editor di script …
  • seleziona Crea un nuovo progetto
  • nella finestra del codice vuota che appare, incolla il seguente codice, che verrà eseguito automaticamente ogni volta che un la 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 } ); } } 
  • torna al foglio e inizia a giocare con i valori per vedere lordinamento della tabella automaticamente ogni volta

Nota:

Nella sopra lo script,

  • il valore 4 rappresenta lindice della colonna D (la colonna Value – la su quelle “verranno ordinate)
  • il valore "B3:E9" rappresenta lintervallo della tabella (esclusa la riga di intestazione)

La tua tabella molto probabilmente sarà diversa dalla mia, quindi questi valori dovrebbero essere regolati di conseguenza.

Commenti

  • Ho provato la tua funzione [modificata] su Modifica ( evento) {var sheet = event.source.getActiveSheet (); var editedCell = sheet.getActiveCell (); var columnToSortBy = 4; var tableRange = ” A2: F99 “; if (editedCell.getColumn () == columnToSortBy) {var range = sheet.getRange (tableRange); range.sort ({column: columnToSortBy}); }} ma continua a ricevere un errore: TypeError: Impossibile leggere la proprietà ” source ” da undefined. (riga 2) che è il seguente codice: var sheet = event.source.getActiveSheet (); qualche idea? NM, ricevi lerrore solo durante lesecuzione dalla pagina dello script, ma funziona correttamente sul foglio di calcolo effettivo
  • ma continua a ricevere un errore: TypeError: Impossibile leggere la proprietà ” sorgente ” da undefined. (riga 2) che è il seguente codice: var sheet = event.source.getActiveSheet (); qualche idea? NM, viene visualizzato lerrore solo durante lesecuzione dalla pagina dello script, ma funziona correttamente sul foglio di calcolo effettivo. Ora domanda … è lordinamento A-Z, come posso cambiarlo per lordinamento automatico Z-A? grazie
  • @ drizzt09 Quando chiami il metodo probabilmente specifichi null per il parametro event, che altrimenti è correttamente popolato dallinfrastruttura del foglio di lavoro di Google quando viene attivato un evento reale.
  • @ drizzt09 per modificare lordinamento, modifica la riga range.sort in questo modo: range.sort( { column : columnToSortBy, ascending: false } ); . Per ulteriori opzioni di ordinamento vedi developers.google.com/apps-script/class_range#sort
  • @ w0lf Grazie per aver funzionato perfettamente. ora vorrei aggiungerlo o avere una funzione separata che esegue la stessa identica funzione ma allapertura o allaggiornamento. Quindi, quando apro / aggiorno il foglio Excel, ordinerà automaticamente la quarta colonna discendendo come quando modifico il codice nella colonna 4 con il tuo codice corrente. Grazie

Risposta

Unaltra opzione senza script è:

=QUERY(A1:C3,"SELECT * ORDER BY C") 

Lintervallo è limitato (A1: C3) perché dove lordine è crescente appariranno per prime voci vuote.

Commenti

  • Potresti farmi sapere dove devo metterlo?
  • Puoi usare SELECT * WHERE C <> '' ORDER BY C per ignorare le voci vuote, quindi puoi utilizzare un intervallo sufficientemente ampio da includere tutte le righe attuali e future.

Risposta

Qui “uno script generico che verrà ordinato automaticamente in base alla prima colonna e presuppone una riga di intestazione.

Per creare uno script:

  • Nel menu, vai su Strumenti -> Editor di 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 } ); } } 

Commenti

  • Ho scoperto che dovevo var sheet = SpreadsheetApp.getActiveSpreadsheet(); invece di quello che ‘ è qui.
  • Funziona benissimo, ma come posso modificarlo in modo che venga ordinato solo su un singolo foglio in doc?
  • ‘ non sembra funzionare

Risposta

Usi ng la soluzione di script, ma ordinare su più di una colonna

Volevo ordinare in base a una colonna del menu a discesa e quindi per data.

Per farlo, modifica la riga “range.sort” degli snippet 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 consiste nellaggiungere le parentesi dritte attorno allintera istruzione (array) e separare gli ordinamenti con virgole.

Modifica del codice di ordinamento estratta dalla risposta di Stack Overflow di Serge qui : Ordinamento automatico sui fogli

Risposta

Qui ho creato un script di ordinamento automatico e foglio di lavoro (richiede un po di lavoro sul foglio, una copia incolla del codice e limpostazione degli intervalli. Si basa su più risposte stackexchange

https://docs.google.com/spreadsheets/d/1LDohwCuy8HZg4YCQEOuWmgpY_WG2BVh_aH-i4JGM5BE/edit#gid=0

Il suo record e ottiene il valore dellintervallo su cui ti concentri allultima modifica confrontalo con il valore ora dopo la modifica effettiva e se diverso ordina la tabella.

Risposta

Fogli Google ha filtri proprio per questo motivo e lo fa Non è necessario creare un nuovo foglio nel documento.

Documentazione: https://support.google.com/docs/answer/3540681

Risposta

Può essere fatto utilizzando Google App Script. Lo script verrà automaticamente ordinato ogni volta che viene apportata una modifica ai dati del foglio.

Nel tuo foglio Google:
scegli Strumenti -> Script Editor e incolla lo script seguente e salva.

Sostituisci le variabili SHEET_NAME, SORT_DATA_RANGE e SORT_ORDER con i valori corrispondenti.

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."); } 

Fonte: https://www.idiotinside.com/2018/06/08/sort-multiple-columns-google-sheets-apps-script/

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *