Come invertire l'ordine delle righe selezionate?


33

C'è un modo semplice per invertire l'ordine delle righe selezionate ? (O che ne dici di tutte le righe , se è più facile.)

In particolare, in questo caso, non esiste una colonna che possa essere utilizzata per l'ordinamento per metterli nel giusto ordine. Quindi, dati un gruppo di righe in un ordine arbitrario, è possibile invertire tale ordine?

Come esempio...

inserisci qui la descrizione dell'immagine

... dopo l'inversione di queste 5 file, "Waitrose 756" dovrebbe arrivare per primo e "Moot" per ultimo.


"non esiste una colonna che possa essere utilizzata per l'ordinamento" Perché non aggiungere semplicemente una colonna con valori crescenti (1, 2, 3, ...), ordinare in ordine decrescente su quella colonna, quindi rimuoverla?
Patrick,

Questa è una richiesta molto comune, perché così tante persone iniziano un foglio di calcolo con una riga per ogni voce, aggiungendo nuove righe in fondo, e poi dopo 100 righe si rendono conto di voler invertirlo per aggiungere righe in alto, perché impiega MODO troppo tempo per trovare la riga non vuota più in basso ogni volta che si desidera aggiungere un nuovo dato. Sfortunatamente AFAIK non c'è modo di farlo, non se si desidera che le formule e la formattazione rimangano invariate dopo l'inversione.
Phil Goetz,

Risposte:


24

Per invertire l'ordine dell'intervallo selezionato (in contrapposizione all'ordinamento per colonna specifica), è possibile utilizzare il seguente script:

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

Aggiungendo questo script onOpen verrà creata una voce di menu chiamata Extra , contenente una voce chiamata Reverse :

function onOpen ()
{
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var menu = [{name: "Reverse", functionName: "reverseOrder"}];
  ss.addMenu("Extra", menu);
}

3
Grazie. Mi ci è voluto un attimo per capire come aggiungerli in modo che appaia la voce di menu (Strumenti -> Script manager ...), ma una volta fatto questo, funziona!
Jonik,

@AdamL, Come possiamo farlo senza script?
Pacerier,

1
@AdamL: ottimo per spostare testo, ma non riesce a spostare il colore di sfondo della cella ecc. Come si può estendere lo script per eseguire anche questo?
Gruber,

1
@Pacerier: ci scusiamo per la risposta straordinariamente in ritardo, ma una soluzione sarebbe con una colonna di supporto con i numeri in ordine crescente e ordinare l'intervallo in base a quella colonna in ordine decrescente (e quindi è possibile rimuovere i valori di aiuto).
AdamL,

@Gruber: la prima opzione sarebbe che lo script copiasse / incollasse una cella alla volta; la seconda opzione sarebbe quella di ottenere tutti i formati richiesti per l'intervallo, anche invertirli e impostarli. Direi che la prima opzione potrebbe essere OK per piccoli intervalli, ma terribile per grandi intervalli; la seconda opzione sarebbe la scommessa migliore per coprire tutti i casi d'uso.
AdamL

21

Ecco un esempio di come eseguire questa operazione senza utilizzare gli script: tieni presente che questo metodo presuppone che i tuoi dati siano solo dati, potrebbe fare cose strane se hai formule che fanno riferimento ad altre celle nello stesso intervallo:

  1. Inserisci una nuova colonna (per esempio, la chiameremo colonna A).
  2. In A1, inserisci il valore [1]. (Puoi iniziare da A10 o A50 se vuoi solo ordinare un intervallo)
  3. In A2, inserisci la formula [= A1 + 1]. (Regola se non hai iniziato da A1 al passaggio 2)
  4. Estendi la formula in A2 fino alla fine dei dati che desideri invertire.

    Ora tutto dovrebbe essere numerato da 1 al numero di righe nell'intervallo che stai ordinando.

  5. Seleziona tutte le righe nell'intervallo che hai impostato.
  6. Fai clic sul menu Dati e seleziona "Ordina intervallo per colonna A, Z -> A".

I tuoi dati ora dovrebbero essere invertiti. A causa del modo in cui impostiamo la formula di numerazione, il numero verrà ripristinato e continuerà comunque da 1 in alto ... ma i dati effettivi in ​​altre colonne dovrebbero essere tutti invertiti.


2
È così oscenamente facile che ho dovuto schiacciarmi la fronte per non pensarci. Risposta fantastica. +1.
GroggyOtter

2
Per i passaggi 2-4, non è nemmeno necessaria una formula. Basta inserire 1 in A1, 2 in A2, selezionare entrambi e trascinarlo verso il basso per quanto necessario.
Patrick,

4

Seguendo l'esempio di Mir puoi inserire la funzione SORT nella cella D3 per invertire l'ordine dei dati nella colonna C:

=sort(C3:C,A3:A,False)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.