Как поменять порядок выбранных строк?

33

Есть ли простой способ изменить порядок выбранных строк ? (Или как насчет всех строк , если это проще.)

В частности, в этом случае нет столбца, который можно было бы использовать для сортировки, чтобы получить их в правильном порядке. Таким образом, при наличии ряда строк в произвольном порядке, можно ли изменить этот порядок?

В качестве примера...

введите описание изображения здесь

... после изменения этих 5 рядов «Waitrose 756» должен стоять первым, а «Moot» последним.

Jonik
источник
«нет столбца, который можно было бы использовать для сортировки» Почему бы просто не добавить столбец с возрастающими значениями (1, 2, 3, ...), отсортировать по убыванию по этому столбцу, а затем удалить его?
Патрик
Это очень распространенный запрос, потому что очень много людей запускают электронную таблицу со строкой для каждой записи, добавляя новые строки внизу, а затем после 100 строк понимают, что хотят инвертировать ее, чтобы добавить строки вверху, потому что она занимает WAY слишком много времени, чтобы найти самую нижнюю непустую строку каждый раз, когда вы хотите добавить новый фрагмент данных. К сожалению, AFAIK нет никакого способа сделать это, если вы не хотите, чтобы ваши формулы и форматирование оставались неизменными после инверсии.
Фил Гетц

Ответы:

24

Чтобы изменить порядок выбранного диапазона (в отличие от сортировки по определенному столбцу), вы можете использовать следующий скрипт:

function reverseOrder()
{
  var range = SpreadsheetApp.getActiveRange();
  var values = range.getValues();
  range.setValues(values.reverse());
}

Добавление этого сценария onOpen создаст пункт меню Extra , содержащий элемент Reverse :

function onOpen ()
{
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var menu = [{name: "Reverse", functionName: "reverseOrder"}];
  ss.addMenu("Extra", menu);
}
AdamL
источник
3
Спасибо. Мне потребовалось время, чтобы выяснить, как добавить их, чтобы появился пункт меню (Инструменты -> Диспетчер скриптов ...), но как только я это сделал, он работает!
Йоник
@AdamL, как мы можем сделать это без сценариев?
Pacerier
1
@AdamL: отлично подходит для перемещения текста, но не удается переместить цвет фона ячейки и т. Д. Как можно расширить сценарий, чтобы выполнить это?
Грубер
1
@Pacerier: извинения за необычайно поздний ответ, но одним из решений было бы использование вспомогательного столбца с номерами в порядке возрастания и сортировка диапазона по убыванию этого столбца (а затем вы можете удалить вспомогательные значения).
AdamL
@Gruber: первым вариантом будет сценарий для копирования / вставки одной ячейки за раз; Второй вариант - получить все необходимые форматы для диапазона, а также изменить их и установить. Я бы сказал, что первый вариант может подойти для небольших диапазонов, но ужасен для больших; второй вариант будет лучшим выбором для всех вариантов использования.
AdamL
21

Вот пример того, как сделать это без использования скриптов - обратите внимание, что этот метод предполагает, что ваши данные - это просто данные - он может делать странные вещи, если у вас есть формулы, ссылающиеся на другие ячейки в том же диапазоне:

  1. Вставьте новый столбец (для примера, мы назовем его столбцом A).
  2. В A1 введите значение [1]. (Вы можете начать с A10 или A50, если хотите отсортировать диапазон)
  3. В A2 поместите формулу [= A1 + 1]. (Отрегулируйте, если вы не начали с A1 на шаге 2)
  4. Расширьте формулу в A2 до нижней части данных, которые вы хотите изменить.

    Теперь все должно быть пронумеровано от 1 до количества строк в диапазоне, который вы сортируете.

  5. Выберите все строки в диапазоне, который вы установили.
  6. Нажмите на меню данных и выберите «Сортировать диапазон по столбцу A, Z -> A».

Ваши данные теперь должны быть в обратном порядке. Из-за того, как мы настроили формулу нумерации, номер будет сброшен и все еще будет начинаться с 1 наверху ... но фактические данные в других столбцах следует поменять местами.

Мир
источник
2
Это так непристойно легко, что мне пришлось бить себя по лбу, не думая об этом. Фантастический ответ. +1.
GroggyOtter
2
Для шагов 2-4 вам даже не нужна формула. Просто введите 1 в A1, 2 в A2, выберите оба и перетащите их вниз, насколько это необходимо.
Патрик
4

Следуя примеру Мира, вы можете поместить функцию SORT, скажем, в ячейку D3, чтобы изменить порядок данных в столбце C:

=sort(C3:C,A3:A,False)
арт
источник