Пример листа: Ссылка
У меня довольно небольшой набор данных, который я часто сортирую, и чтобы избежать сортировки вручную каждый раз, я создал базовую c сортировку в приложениях- скрипт, который работает, но далек от идеала. Я надеялся, что есть более простой метод сортировки, не требующий ввода формул Google.
Данные представлены как (слева) и один раз отсортированы как (справа):
У меня до сих пор выглядит скрипт-приложения:
function sortSheet() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Sheet1');
var data = ss.getSheetByName('Data');
var lA = data.getRange('B2').getValue(); //Retuns the row for the first occurance of this value. Via.(=MATCH($A2,'Sheet1'!$A:$A,0)) Where Match(Value,Range to check) on the 'data' sheet.
var nA = data.getRange('C2').getValue(); //Returns the total number of these values. Via. (=COUNTIF('Sheet1'!$A:$A,$A2)) Where CountIF(Range to check,Value) on the 'data' sheet.
var sortA = sheet.getRange('A'+lA+':Y'+(lA+nA)); //Selects the range that contains the values to be sorted. Via. A through Y within the specified rows.
sortA.sort({column: 2, ascending: true}) //Sorts range by column 2.
var lB = data.getRange('B3').getValue();
var nB = data.getRange('C3').getValue();
var sortB = sheet.getRange('A'+lB+':Y'+(lB+nB));
sortB.sort({column: 2, ascending: true})
var lC = data.getRange('B4').getValue();
var nC = data.getRange('C4').getValue();
var sortC = sheet.getRange('A'+lC+':Y'+(lC+nC));
sortC.sort({column: 2, ascending: true})
}
Этот скрипт зависит от информации приведены из листа «Данные» . На этом листе берется первая строка, в которой данный ключ находится в столбце B, и счетчик этого ключа в столбце C.
Затем сценарий получает необходимый диапазон для сортировки и просматривает их по одному. Кто-нибудь сможет помочь упростить эту операцию или сделать ее проще?