Как отправить автоматически отсортированные пустые строки в конец? - PullRequest
0 голосов
/ 23 мая 2019

У меня есть скрипт, который сортирует столбец B при редактировании, но есть две проблемы с ним.

1 - отправляет строки со значениями в конец листа.

2 - числа сортируются неправильно.Они должны идти в порядке 1,3,4,5 и 20, но когда он сортирует себя, он заказывает их как 1, 20, 3, 4, 5. Как будто он распознает только 2 из 20 и размещает егопосле 1.

Я искал форум за форумом, пытаясь понять это без удачи, поэтому помощь будет принята с благодарностью.

function onEdit(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("050")
  var range = sheet.getRange("A6:L200");

 // Sorts by the values in column 2 (B)
 range.sort({column: 2, ascending: true});

}

Я не знаю, имеет ли это значениеили нет, но сортируемый лист использует VLOOKUP.Каждый столбец от B использует VLOOKUP.

=IFERROR(VLOOKUP(A6,data2019,3,FALSE),"")

1 Ответ

0 голосов
/ 23 мая 2019

Прежде всего, нет необходимости получать пустые значения, вместо этого вы можете использовать getDataRange(), чтобы получить только тот диапазон, который вам нужно отсортировать.

Как только вы определили свой диапазон, вы можете его отсортировать. Ваши значения не сортируются правильно (это, вероятно, из-за форматирования ячейки из VLOOKUP). Вы можете просто установить формат диапазона данных в числовой формат, используя setNumberFormat('0'), а затем отсортировать данные в ожидаемом порядке.

function onEdit(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("050");
  var range = sheet.getDataRange();
  var numRows = range.getNumRows();

  //sets the formatting of column B to a number in all populated rows
  sheet.getRange(1, 2, numRows).setNumberFormat('0');

  //sorts range by column B using newly formatted values
  range.sort({column: 2, ascending: true});
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...