Immaginiamo di dover ordinare una tabella di Excel, riga per riga, in senso crescente; partendo ad esempio da questo intervallo
3 | 1 | 6 | 2 |
10.345 | 8.45 | 9.34 | 10.344 |
5 | 2 | 3 | 5 |
abbiamo bisogno che ogni riga venga ordinata in senso crescente per ottenere questo risultato
1 | 2 | 3 | 6 |
8.45 | 9.34 | 10.344 | 10.345 |
2 | 3 | 5 | 5 |
Possiamo ricorrere ad una macro che agirà sulle celle selezionate; vediamo come crearla:
Dovendo lavorare in ambiente VBA apriamo la relativa finestra.
In Excel XP o 2003
Menù Strumenti – Macro – Visual Basic Editor
In Excel 2007
Bottone di Office – Pulsante Opzioni di Excel – Impostazioni generali – Opzione Mostra scheda Sviluppo sulla barra multifunzione
A questo punto ritornando nella finestra di Excel verrà visualizzata anche la Scheda Sviluppo nella quale troviamo il pulsante Visual Basic
In Excel 2010/2013
Scheda File – Opzioni – Personalizzazone barra multifunzione – Selezionare Sviluppo nella sezione Schede principali
A questo punto ritornando nella finestra di Excel verrà visualizzata anche la Scheda Sviluppo nella quale troviamo il pulsante Visual Basic
Nella finestra Visual Basic inserire un nuovo modulo (menù Inserisci – Modulo) quindi copiare il codice riportato qui sotto:
Public Sub SortByString()
Dim row As Range
For Each row In Selection.Rows
row.Sort Key1:=row, Order1:=xlAscending, Orientation:=xlSortRows
Next row
End Sub
Chiudere la finestra di Visual Basic.
Selezionare l’intervallo che si vuole ordinare riga per riga quindi attivare la macro SortByString che troveremo nell’elenco delle macro accessibile tramite la Scheda Visualizza -> Macro
I dati nelle righe selezionate verranno quindi ordinati in senso crescente, riga per riga!
Informatics, ski racer, loves travels, Finland, Norway, mountains, squash, photography, Drones and RC Helicopter
Ottima idea di base, ma “scorretta” nel comportamento se paragonato al funzionamento del classico sort(byColumn).
La tua funziona ordina i valori di ogni riga, mentre – almeno io – mi aspettato un ordinamento dell’intera tabella in base ai valori della prima riga.
Cmq ottimi articoli e ottime spiegazioni!
Buongiorno, avrei trovato molto utile la funzione che mette in ordine i dati di una riga che sono inseriti in varie celle, volevo chiedere se è possibile ordinare non tutta la riga ma solo iniziando da una cella es. da 2D in avanti e così anche per le righe sotto.-
In pratica tutte le riche avranno il numero più alto nella colonnaD.
Poi potrò fare in modo che nella colonna D in alto ci sia il numero più grande creando di fatto una classifica.-
Spero di essermi spiegato bene.-
Grazie saluti
Claudio
Fantastico! Proprio la macro che mi serviva! Ottimo grazie mille! Ore di lavoro risparmiato!