Відповіді:
Ви можете використовувати в sort()
функції для цього, але ви повинні мати свої дані в одному місці, і автоматично відсортованих копії цих даних в іншому місці.
Наприклад, скажіть, що у мене є Sheet1 зі своїми даними:
| A | B | C
=====================
1 | This | this | 2
2 | Is | is | 1
3 | Test | test | 3
Тоді у Sheet2, комірці A1 я поставив би цю функцію:
= сортувати (Sheet1! A: C, 3, TRUE)
Це показало б мої дані, але відсортовані за стовпцем С (третій стовпчик), у зростанні.
| A | B | C
=====================
1 | Is | is | 1
2 | This | this | 2
3 | Test | test | 3
Також можна використовувати Сценарії Google Apps для автоматичного сортування даних на місці.
Це може бути важче досягти і більш схильним до помилок (я б все-таки пішов на рішення Вільяма Джексона, +1 BTW), але я вважав, що це досить цікаво, щоб показати.
У мене аркуш виглядає так:
Я додав новий сценарій, виконавши наступні кроки:
у вікно порожнього коду, що з’явиться, вставте наступний код, який автоматично запускатиметься кожного разу, коли редагувати комірку:
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 } );
}
}
поверніться до аркуша і почніть грати зі значеннями, щоб побачити таблицю сортування автоматично кожного разу
Примітка:
У наведеному вище сценарії
4
представляє індекс стовпця D ( Value
стовпець - той, який буде відсортований)"B3:E9"
представляє діапазон таблиці (виключаючи рядок заголовка)Ваша таблиця, швидше за все, відрізнятиметься від моєї, тому ці значення слід відповідно коригувати.
null
для event
параметра, який в іншому випадку правильно населеної інфраструктури Spreadsheet Google , коли реальна подія.
range.sort
рядок: range.sort( { column : columnToSortBy, ascending: false } );
. Більше варіантів сортування див. У розробниках.google.com
Ось загальний скрипт, який буде автосортувати на основі 1-го стовпця та передбачає рядок заголовка.
Щоб створити сценарій:
У вікно порожнього коду вставте наступний код, який автоматично запускатиметься кожного разу, коли редагується комірка:
// 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();
замість того, що тут.
Ще один варіант без сценарію:
=QUERY(A1:C3,"SELECT * ORDER BY C")
Діапазон обмежений (A1: C3), оскільки там, де порядок зростає, порожні записи з’являться першими.
SELECT * WHERE C <> '' ORDER BY C
ігнорувати порожні записи, тоді ви можете використовувати досить великий діапазон, щоб включити всі поточні та майбутні рядки.
Я хотів сортувати за стовпцем меню, а потім за датою.
Для цього змініть рядок "range.sort" будь-якого з фрагментів коду Крістіана або Geekspotz:
// 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}]);
Різниця полягає в додаванні прямих дужок навколо всього висловлення (масиву) та розділення сортів комами.
Сортування модифікації коду, витягнутий з відповіді Сергія на стек переповнення тут : Автоматичне сортування за таблицями
Саме з цієї причини в Google Sheets є фільтри, і це не вимагає від вас нового аркуша в документі.
Документація: https://support.google.com/docs/answer/3540681
;
наприклад= sort(Sheet1!A:C; 3; TRUE)