Como reverter a ordem das linhas selecionadas?

33

Existe uma maneira fácil de reverter a ordem das linhas selecionadas ? (Ou que tal todas as linhas , se isso for mais fácil.)

Especificamente, nesse caso, não há coluna que possa ser usada para classificação para colocá-las na ordem correta. Então, dado um monte de linhas em uma ordem arbitrária, é possível reverter essa ordem?

Como um exemplo...

insira a descrição da imagem aqui

... após a reversão dessas 5 linhas, "Waitrose 756" deve vir primeiro e "Moot" por último.

Jonik
fonte
"não existe uma coluna que possa ser usada para classificação" Por que não adicionar uma coluna com valores ascendentes (1, 2, 3, ...), classificar decrescente nessa coluna e removê-la?
Patrick
Essa é uma solicitação muito comum, porque muitas pessoas iniciam uma planilha com uma linha para cada entrada, adicionando novas linhas na parte inferior e, depois de 100 linhas, percebem que desejam invertê-la para adicionar linhas na parte superior, porque leva MUITO tempo demais para encontrar a linha que não fica em branco na parte inferior toda vez que você deseja adicionar um novo pedaço de dados. Infelizmente, a AFAIK não tem como fazê-lo, não se você quiser que suas fórmulas e formatação permaneçam as mesmas após a inversão.
Phil Goetz

Respostas:

24

Para reverter a ordem do intervalo selecionado (em vez de classificar por uma coluna específica), você pode usar o seguinte script:

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

Adicionar este script onOpen criará um item de menu chamado Extra , contendo um item chamado Reverse :

function onOpen ()
{
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var menu = [{name: "Reverse", functionName: "reverseOrder"}];
  ss.addMenu("Extra", menu);
}
AdamL
fonte
3
Obrigado. Levei um momento para descobrir como adicioná-los para que o item de menu apareça (Ferramentas -> Gerenciador de scripts ...), mas uma vez que eu fiz isso, ele funciona!
21813 Jonik
@ AdamL, como podemos fazer isso sem scripts?
Pacerier
1
@ AdamL: Ótimo para mover texto, mas falha ao mover a cor de fundo da célula, etc. Como o script pode ser estendido para também fazer isso?
Gruber
1
@ Pacerier: desculpas pela resposta extraordinariamente tardia, mas uma solução seria uma coluna auxiliar com números em ordem crescente e classifique o intervalo por essa coluna decrescente (e você poderá remover os valores auxiliares).
AdamL
@Gruber: a primeira opção seria para o script copiar / colar uma célula de cada vez; a segunda opção seria obter todos os formatos necessários para o intervalo, revertê-los também e defini-los. Eu diria que a primeira opção pode ser boa para intervalos pequenos, mas terrível para intervalos grandes; a segunda opção seria a melhor aposta para cobrir todos os casos de uso.
AdamL
21

Aqui está um exemplo de como fazer isso sem usar scripts - observe que esse método assume que seus dados são apenas dados - pode fazer coisas estranhas se você tiver fórmulas referenciando outras células no mesmo intervalo:

  1. Insira uma nova coluna (por exemplo, chamaremos de coluna A).
  2. Em A1, coloque o valor [1]. (Você pode iniciar em A10 ou A50 se desejar apenas classificar um intervalo)
  3. Em A2, coloque a fórmula [= A1 + 1]. (Ajuste se você não iniciou na A1 na etapa 2)
  4. Estenda a fórmula em A2 até a parte inferior dos dados que você deseja reverter.

    Agora, tudo deve ser numerado de 1 ao número de linhas no intervalo que você está classificando.

  5. Selecione todas as linhas no intervalo que você configurou.
  6. Clique no menu Dados e selecione "Classificar intervalo pela coluna A, Z -> A".

Seus dados agora devem ser revertidos em ordem. Devido à maneira como configuramos a fórmula de numeração, o número será redefinido e ainda começará a partir de 1 na parte superior ... mas os dados reais em outras colunas devem ser todos revertidos.

Mir
fonte
2
Isso é tão obscenamente fácil que tive que bater na minha testa por não pensar nisso. Resposta fantástica. +1.
GroggyOtter
2
Para as etapas de 2 a 4, você nem precisa de uma fórmula. Basta digitar 1 em A1, 2 em A2, selecione ambos e arraste-o para baixo o quanto for necessário.
Patrick
4

Seguindo o exemplo de Mir, você pode colocar a função SORT na célula D3 para inverter a ordem dos dados na coluna C:

=sort(C3:C,A3:A,False)
artu
fonte