Cum pot face unele date pe o sortare automată Foi de calcul Google?

Să spunem că vreau Foi de calcul Google să sorteze automat unele date, de exemplu coloana C.

Cum fac asta?

Știu că pot sorta manual datele făcând clic dreapta și selectând Sortare date , dar nu asta sunt căutând.

Răspuns

Puteți utiliza pentru aceasta, dar trebuie să aveți datele într-un singur loc și o copie sortată automat a acestor date într-un alt loc.

De exemplu, spuneți Am Sheet1 cu datele mele:

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

Apoi în Sheet2, celula A1, aș pune această funcție:

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

Aceasta ar afișa datele mele, dar sortate după coloană C (a treia coloană), crescător.

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

Comentarii

  • Parametrii trebuie separați cu punct și virgulă

    de ex. = sort(Sheet1!A:C; 3; TRUE)

  • @Petr Funcționează foarte bine pentru mine cu virgule.
  • @ user17634: Depinde de setările locale.
  • Problema cu această abordare este că nu puteți muta elementul # 3 în poziția elementului # 1 (se duplică # 3).

Răspuns

De asemenea, este posibil să utilizați Scripturi Google Apps pentru a realiza o sortare automată a datelor.

Acest lucru poate fi mai dificil de realizat și mai predispus la erori (aș continua să aleg soluția lui William Jackson, +1 BTW), dar am considerat că este suficient de interesant să arăt.

Am o foaie care arată astfel:

foaie de sortare automată

Am adăugat un nou script, urmând acești pași:

  • în meniu, accesați Instrumente -> Editor de script …
  • selectați Creați un nou proiect
  • în fereastra de cod goală care apare, lipiți următorul cod, care va fi rulat automat ori de câte ori celula este editată:

    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 } ); } } 
  • reveniți la foaie și începeți să jucați cu valorile pentru a vedea sortarea tabelului automat de fiecare dată

Notă:

În scriptul de mai sus,

  • valoarea 4 reprezintă indicele coloanei D (coloana Value – pe care urmează să fie sortate)
  • valoarea "B3:E9" reprezintă intervalul tabelului (cu excepția rândului de antet)

Tabelul dvs. va fi foarte probabil diferit de al meu, deci aceste valori ar trebui ajustate în consecință.

Comentarii

  • Am încercat funcția dvs. [editată] peEdit ( eveniment) {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}); }} dar continuați să primiți o eroare: TypeError: Nu se poate citi proprietatea ” sursă ” din nedefinit. (linia 2) care este următorul cod: var sheet = event.source.getActiveSheet (); vreo idee? NM, primiți eroarea numai când rulați de pe pagina de script, dar funcționează corect pe calculul real
  • dar continuați să primiți o eroare: TypeError: Nu se poate citi proprietatea ” sursă ” din nedefinit. (linia 2) care este următorul cod: var sheet = event.source.getActiveSheet (); vreo idee? NM, primiți eroarea numai atunci când rulați de pe pagina de script, dar funcționează corect pe foaia de calcul reală. Acum întrebare … sortarea sa A-Z, cum o schimb în sortarea automată Z-A? mulțumesc
  • @ drizzt09 Când apelați metoda, specificați probabil null pentru parametrul event, care altfel este corect populat de infrastructura de calcul Google când se declanșează un eveniment real.
  • @ drizzt09 pentru a modifica ordinea de sortare, schimbați linia range.sort astfel: range.sort( { column : columnToSortBy, ascending: false } ); . Pentru mai multe opțiuni de sortare, consultați developer.google.com/apps-script/class_range#sort
  • @ w0lf Vă mulțumim că a funcționat perfect. acum aș dori să adaug la el sau să am o funcție separată care îndeplinește exact aceeași funcție, dar deschisă sau reîmprospătată. Deci, atunci când deschid / reîmprospătez foaia Excel, va sorta automat a 4-a coloană descendentă la fel ca atunci când modific codul din coloana 4 cu codul dvs. curent. Mulțumim

Răspuns

O altă opțiune fără script este:

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

Intervalul este restricționat (A1: C3), deoarece în cazul în care ordinea este ascendentă vor apărea mai întâi intrări goale.

Comentarii

  • Puteți să-mi spuneți unde ar trebui să pun acest lucru?
  • Puteți utiliza SELECT * WHERE C <> '' ORDER BY C pentru a ignora intrările necompletate, atunci puteți utiliza un interval suficient de mare pentru a include toate rândurile curente și viitoare.

Răspuns

Aici „un script generic care se va autosorta pe baza primei coloane și presupune un rând antet.

Pentru a crea un script:

  • În meniu, accesați Instrumente -> Editor de scripturi …

În fereastra de cod goală, lipiți următorul cod, care va rula automat ori de câte ori este editată o celulă:

 // 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 } ); } } 

Comentarii

  • Am constatat că trebuie să var sheet = SpreadsheetApp.getActiveSpreadsheet(); în loc de ceea ce ‘ are aici.
  • Acest lucru funcționează excelent, dar cum pot edita acest lucru, astfel încât să se sorteze doar pe o singură foaie în doc?
  • ‘ nu pare să funcționeze

Răspunde

Usi ng soluția de script, dar sortează pe mai multe coloane

Am vrut să sortez după o coloană din meniul drop-down și apoi după dată.

Pentru a face acest lucru, modificați linia „range.sort” a oricăruia dintre fragmentele de cod ale lui Cristian sau geekspotz astfel:

// 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}]);

Diferența constă în adăugarea parantezelor drepte în jurul întregii instrucțiuni (matrice) și separarea sortărilor prin virgule.

Modificarea codului de sortare extrasă din răspunsul lui Serge „Stack Overflow” aici : Sortare automată pe foi

Răspuns

Aici am creat un script de sortare automată și foaie de calcul (necesită un pic de lucru pe foaie, o copiere a codului și setarea intervalelor dvs. Se bazează pe mai multe răspunsuri stackexchange

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

Înregistrarea sa și obține valoarea intervalului pe care vă concentrați la ultima editare comparați-o cu valoarea acum după editarea efectivă și dacă diferit, sortează tabelul.

Răspuns

Foi de calcul Google are Filtre tocmai din acest motiv și face n „nu este necesar să creați o foaie nouă în documentul dvs.

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

Răspuns

Se poate face folosind Google App Script. Scriptul se va sorta automat ori de câte ori există o modificare a datelor din foaie.

În foaia dvs. Google:
Alegeți Instrumente -> Editor de scripturi și lipiți scriptul de mai jos și salvați.

Înlocuiți variabilele SHEET_NAME, SORT_DATA_RANGE și SORT_ORDER cu valorile corespunzătoare.

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

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

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *