Disons que je veux que Google Sheets trie automatiquement certaines données, par exemple la colonne C
.
Comment faire?
Je sais que je peux trier manuellement les données en cliquant avec le bouton droit de la souris et en sélectionnant Trier les données , mais ce nest pas ce que je « m recherche.
Réponse
Vous pouvez utiliser le sort()
fonction pour cela, mais vous devez avoir vos données dans un endroit, et une copie triée automatiquement de ces données dans un autre endroit.
Par exemple, disons Jai Sheet1 avec mes données:
| A | B | C ===================== 1 | This | this | 2 2 | Is | is | 1 3 | Test | test | 3
Puis dans Sheet2, cellule A1, je mettrais cette fonction:
= sort (Sheet1! A: C, 3, TRUE)
Cela afficherait mes données, mais triées par colonne C (la troisième colonne), croissant.
| A | B | C ===================== 1 | Is | is | 1 2 | This | this | 2 3 | Test | test | 3
Commentaires
Réponse
Il est également possible dutiliser des Scripts Google Apps pour effectuer un tri automatique sur place des données.
Cela peut être plus difficile à réaliser et plus sujet aux erreurs (jopterais toujours pour la solution de William Jackson, +1 BTW), mais jai pensé que cétait assez intéressant à montrer.
Jai une feuille qui ressemble à ceci:
Jai ajouté un nouveau script, en suivant ces étapes:
- dans le menu, allez dans Outils -> Script Editor …
- sélectionnez Créer un nouveau projet
-
dans la fenêtre de code vide qui apparaît, collez le code suivant, qui sera exécuté automatiquement chaque fois quun la cellule est modifiée:
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 } ); } }
-
retournez à la feuille et commencez à jouer avec les valeurs pour voir le tableau trier automatiquement à chaque fois
Remarque:
Dans le ci-dessus,
- la valeur
4
représente lindex de la colonne D (la colonneValue
– le sur ceux qui vont être triés) - la valeur
"B3:E9"
représente la plage du tableau (à lexclusion de la ligne den-tête)
Votre tableau sera très probablement différent du mien, donc ces valeurs doivent être ajustées en conséquence.
Commentaires
- Jai essayé votre fonction [modifiée] surEdit ( event) {var sheet = event.source.getActiveSheet (); var editCell = sheet.getActiveCell (); var columnToSortBy = 4; var tableRange = » A2: F99 « ; if (editCell.getColumn () == columnToSortBy) {var range = sheet.getRange (tableRange); range.sort ({colonne: columnToSortBy}); }} mais continuez à obtenir une erreur: TypeError: Impossible de lire la propriété » source » à partir dundefined. (ligne 2) qui est le code suivant: var sheet = event.source.getActiveSheet (); des idées? NM, nobtient lerreur que lors de lexécution à partir de la page de script, mais cela fonctionne correctement sur la feuille de calcul réelle
- mais continue à obtenir une erreur: TypeError: Cannot read property » source » à partir dundefined. (ligne 2) qui est le code suivant: var sheet = event.source.getActiveSheet (); des idées? NM, nobtient lerreur que lors de lexécution à partir de la page de script, mais cela fonctionne correctement sur la feuille de calcul réelle. Maintenant question … son tri A-Z, comment puis-je le changer en tri automatique Z-A? merci
- @ drizzt09 Lorsque vous appelez la méthode, vous spécifiez probablement
null
pour le paramètreevent
, qui est par ailleurs correctement alimenté par linfrastructure Google Spreadsheet lorsquun événement réel est déclenché. - @ drizzt09 pour modifier lordre de tri, modifiez la ligne
range.sort
comme suit:range.sort( { column : columnToSortBy, ascending: false } );
. Pour plus doptions de tri, consultez développeurs.google.com/apps-script/class_range#sort - @ w0lf Merci pour votre travail parfait. maintenant, je voudrais y ajouter ou avoir une fonction distincte qui exécute exactement la même fonction mais à louverture ou à lactualisation. Ainsi, lorsque jouvre / actualise la feuille Excel, elle trie automatiquement la 4ème colonne dans la même direction que lorsque jédite le code de la colonne 4 avec votre code actuel. Merci
Réponse
Une autre option sans script est:
=QUERY(A1:C3,"SELECT * ORDER BY C")
La plage est restreinte (A1: C3) car là où lordre est croissant, les entrées vides apparaîtront en premier.
Commentaires
- Pourriez-vous sil vous plaît me dire où dois-je le mettre?
- Vous pouvez utiliser
SELECT * WHERE C <> '' ORDER BY C
pour ignorer les entrées vides, vous pouvez alors utiliser une plage suffisamment large pour inclure toutes les lignes actuelles et futures.
Réponse
Voici « un script générique qui effectuera un tri automatique basé sur la 1ère colonne, et supposera une ligne den-tête.
Pour créer un script:
- Dans le menu, allez dans Outils -> Éditeur de script …
Dans la fenêtre de code vide, collez le code suivant, qui sexécutera automatiquement à chaque modification dune cellule:
// 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 } ); } }
Commentaires
- Jai trouvé que je devais
var sheet = SpreadsheetApp.getActiveSpreadsheet();
au lieu de ce que ‘ est ici. - Cela fonctionne très bien, mais comment puis-je modifier ceci pour quil ne trie que sur une seule feuille dans doc?
- ne ‘ ne semble pas fonctionner
Réponse
Usi ng la solution de script, mais trier sur plus dune colonne
Je voulais trier par une colonne de menu déroulant puis par date.
Pour ce faire, modifiez la ligne « range.sort » des extraits de code de Cristian ou de geekspotz comme suit:
// 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 différence est dajouter les crochets droits autour de votre déclaration entière (tableau) et de séparer les tris par des virgules.
Modification du code de tri tirée de la réponse Stack Overflow de Serge ici : Tri automatique sur feuilles
Réponse
Ici, jai créé un script de tri automatique et feuille de calcul (cela nécessite un peu de travail sur la feuille, un copier-coller du code et la définition de vos plages. Il est basé sur plusieurs réponses stackexchange
https://docs.google.com/spreadsheets/d/1LDohwCuy8HZg4YCQEOuWmgpY_WG2BVh_aH-i4JGM5BE/edit#gid=0
Son enregistrement et obtient la valeur de la plage sur laquelle vous vous concentrez lors de la dernière modification, comparez-le à la valeur maintenant après la modification réelle et si différent, il trie le tableau.
Réponse
Google Sheets a Filtres pour cette raison et fait n « t vous oblige à créer une nouvelle feuille dans votre document.
Documentation: https://support.google.com/docs/answer/3540681
Réponse
Cela peut être fait à laide de Google App Script. Le script triera automatiquement chaque fois quil y a un changement dans les données de la feuille.
Sur votre feuille Google:
Choisissez Outils -> Éditeur de script et collez le script ci-dessous et enregistrez.
Remplacez les variables SHEET_NAME, SORT_DATA_RANGE et SORT_ORDER par les valeurs correspondantes.
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."); }
Source: https://www.idiotinside.com/2018/06/08/sort-multiple-columns-google-sheets-apps-script/
par exemple
= sort(Sheet1!A:C; 3; TRUE)