In questa guida vediamo come ordinare i dati in Excel, in particolare considerando casi più complessi nei quali vogliamo inserire più condizioni.
Utilizzeremo i dati della stagione regolare NBA 2024/2025 per poi ordinare:
- Le squadre dalla più vincente alla meno vincente
- Le squadre dalla più vincente alla meno vincente, ordinate poi per net rating (differenza punti fatti e subiti) e nome del team
Gli esempi sono con numeri e testi ma considera che, se hai valori di data (essendo le date numeri, per Excel), il ragionamento sarà esattamente lo stesso visto qui nella guida. Se vuoi seguire la guida passo passo, scarica il file!
Vedremo tre soluzioni, includendo gli strumenti propri di Excel, le formule e Power Query. Cominciamo!
Come ordinare i dati in Excel con una o più condizioni

Si possono ordinare i dati di Excel in diversi modi, ma il più immediato è utilizzare l'ordinamento standard di Excel. La shortcut per far apparire le opzioni, selezionando le intestazioni dei tuoi dati, è CTRL+SHIFT+L, utile se devi ordinare o filtrare i dati.
Come noti, da questo menu puoi infatti ordinare A-Z (crescente), Z-A (decrescente) e anche per colore. Se ti serve una sola condizione, queste opzioni dovrebbero essere più che sufficienti.
Se avessi più condizioni, hai bisogno dell'ordinamento personalizzato. Per accedere alle opzioni dell'ordinamento personalizzato, che vediamo fra poco, dovresti selezionare Ordina per colore > Ordinamento personalizzato. Il passaggio non è proprio immediato, quindi vediamo nello specifico un'alternativa.

Nello specifico, se vuoi ordinare per condizioni multiple, dovresti andare su Home > Ordina e filtra > Ordinamento personalizzato, in modo da poter selezionare più colonne come riferimento.

C'è un ordine gerarchico fra i singoli livelli, come vedi:
- Il primo è relativo alle vittorie, ordinate dal valore più grande al più piccolo
- Il secondo è relativo al rating, ordinato dal più piccolo al più grande
- Il terzo è relativo al nome del team, ordinato dalla A alla Z, essendo un valore testuale

L'output vede quindi i dati ordinati, dove vediamo spiccare gli Oklahoma City Thunder e ben quattro squadre a 50 vittorie. Clippers, Nuggets, Pacers e Lakers sono ordinati così perchè, benchè abbiano 50 vittorie a testa, il net rating è superiore per i Clippers (4,8), poi Nuggets (3,9), Pacers (2,2) e infine Lakers (1,2).
Il problema di questo metodo è che non è definitivo. Se ordino i dati in maniera diversa, mi perderò l'ordinamento precedente. C'è quindi un certo grado di rischio, soprattutto se a lavorare sul file ci sono varie persone. Lo stesso vale per le tabelle pivot, dove possiamo sì ordinare i dati come preferiamo, ma la selezione del collega successivo sovrascrive la nostra, quindi potrebbe dare qualche problema in fase di analisi.
Se invece lavorassimo con le formule, potremmo creare un array per ottenere i dati esattamente come li vogliamo, indipendentemente dall'ordinamento precedente. Vediamo come fare.
Come ordinare i dati in Excel con una o più condizioni usando le formule
Prima dei dynamic array, non era così semplice ordinare i dati in Excel con una o più condizioni sfruttando le funzioni native. Per fortuna, ci viene in soccorso la funzione DATI.ORDINA:

=DATI.ORDINA(TBL_NBA[[TEAM]:[VITTORIE]];2;-1)
Ci sono tre elementi fondamentali, in questa formula:
- TBL_NBA[[TEAM]:[VITTORIE]] prende tutte le colonne da TEAM a VITTORIE. Se lavori con tabelle non dovrebbe stupirti, in questo caso è comodo perchè sono solo due colonne consecutive
- 2 considera in modo proritario la seconda colonna del riferimento, quindi VITTORIE
- -1 ordina i dati in maniera decrescente, dal più grande al più piccolo
Avremmo potuto ottenere lo stesso risultato con DATI.ORDINA.PER, che aggiungo giusto per dovere di cronaca:
=DATI.ORDINA.PER(TBL_NBA[[TEAM]:[VITTORIE]];TBL_NBA[VITTORIE];-1)
La differenza fondamentale fra le due funzioni è che con DATI.ORDINA.PER possiamo dichiarare la colonna che ci interessa, quindi è più chiaro vedere come vittorie sia in effetti la nostra bussola per orientarci, sempre con i valori in ordine decrescente (-1).
Come cambiano queste formule se le condizioni sono più di una? Vediamolo insieme, replicando il caso precedente con vittorie (Z-A), rating (A-Z) e team (A-Z):

=DATI.ORDINA(STACK.ORIZ(TBL_NBA[TEAM];TBL_NBA[VITTORIE];TBL_NBA[NET_RATING]);
{2\3\1};
{-1\-1\1})
Questa formula è decisamente più complessa della precedente, vediamola a step:
- STACK.ORIZ(....) sta unendo le tre colonne di TEAM, VITTORIE, NET_RATING. Queste sono le tre colonne che comporranno il nostro array finale
- {2\3\1} segnala una priorità nell'ordinare queste colonne. Prima la seconda (VITTORIE), poi la terza (NET_RATING), poi la prima (TEAM). In inglese la dicitura è diversa perchè troveresti {1;2}, per la versione italiana non possiamo farlo perchè il punto e virgola è usato per le formule
- {-1\1\1} richiama le tre colonne precedenti. Il primo -1 è collegato alla prima colonna dell'argomento precedente (VITTORIE, la 2 di {2\3\1}), quindi la prima condizione è: ordina le vittorie (seconda colonna dell'array finale) in ordine decrescente (Z-A). Il secondo -1 è nella seconda posizione, quindi si lega al 3 precedente, ovvero il NET_RATING. Qui diciamo che il rating va ordinato (A-Z) e questa condizione impatta solo quando le vittorie sono uguali per una o più squadre. La terza condizione ordina il team, cioè la terza colonna precedente, in modo crescente (1)
Diciamo che, per semplificare, i due array sono collegati dalla posizione, come chiave: {A\X\C} e {1\-1\-1} vorrebbe dire che A si ordinerebbe in modo crescente (A e 1), mentre X sarebbe decrescente (X e -1) e C lo stesso (C e -1).
Alcune funzioni hanno semplificato questo passaggio, ad esempio in RAGGRUPPAPER e PIVOTPER avresti -2 che indicherebbe, in un array, di ordinare in modo decrescente considerando la seconda colonna (2 e -1). Con DATI.ORDINA, purtroppo, non possiamo farlo in automatico.

Più semplice da comprendere, anche se meno compatta, è la soluzione con DATI.ORDINA.PER, che replica il ragionamento precedente:
=DATI.ORDINA.PER(STACK.ORIZ(TBL_NBA[TEAM];TBL_NBA[VITTORIE];TBL_NBA[NET_RATING]);
TBL_NBA[VITTORIE];-1;
TBL_NBA[NET_RATING];-1;
TBL_NBA[TEAM];1)
Anzichè creare due array, stiamo indicando le tre condizioni una dopo l'altra, consecutivamente. Nel mio lavoro di consulente, utilizzo più spesso DATI.ORDINA perchè è più immediato quando lavori con array, ma non c'è niente di male nell'usare anche DATI.ORDINA.PER, l'output sarà lo stesso a prescindere dalla funzione utilizzata.
In linea di massima - se devi ordinare i dati con le formule, DATI.ORDINA e DATI.ORDINA.PER sono lo standard che stai cercando, se non ci sono già degli argomenti dedicati, come in RAGGRUPPAPER o PIVOTPER.
Come ordinare i dati in Power Query in Excel

Vediamo ora come ordinare i dati in Power Query in Excel, inserendo condizioni multiple. Carichiamo la tabella in Power Query e poi ordiniamo, semplicemente cliccando sulla colonna di riferimento, in questo caso VITTORIE. Possiamo poi selezionare la freccia sulla destra per scegliere come filtrare o ordinare i dati.

Se ordiniamo per una sola condizione, il codice è semplice, perchè evidenzia una coppia di valori: {"VITTORIE", Order.Descending}. Stiamo ordinando i dati per le vittorie, dalla squadra che ha vinto più partite a quella che ne ha vinte di meno.

Se ripetiamo il processo con la colonna NET_RATING, notiamo come abbiamo ora un'altra coppia di valori, dedicata a NET_RATING: {"NET_RATING", Order.Descending}. Ordiniamo, anche qui in ordine decrescente, i dati del rating per ciascun team. Come noterai, però, c'è un #1 accanto a VITTORIE e un #2 accanto a NET_RATING, che ci indica la gerarchia fra le varie condizioni.

Inseriamo anche la terza condizione e non ti stupirà vedere la terza coppia di valori, dove stavolta il TEAM è in ordine crescente.

A processo completato, noterai come i tre criteri sono tutti nello stesso step in Power Query, con numeri da 1 a 3. Il codice è questo:
let
Source = Excel.CurrentWorkbook(){[Name="TBL_NBA"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"TEAM", type text}, {"VITTORIE", Int64.Type}, {"SCONFITTE", Int64.Type}, {"NET_RATING", type number}}),
#"Sorted Rows" = Table.Sort(#"Changed Type",{{"VITTORIE", Order.Descending}, {"NET_RATING", Order.Descending}, {"TEAM", Order.Ascending}})
in
#"Sorted Rows"
Ciò che ci interessa è la parte finale con Table.Sort. Come dicevamo, stiamo ordinando una tabella seguendo uno schema prestabilito, dove abbiamo prima di tutto la tabella ottenuta da Changed Type, cioè lo step precedente. A questo punto stiamo lavorando con delle coppie di liste, dove inseriamo prima la colonna e poi l'ordine. {"VITTORIE", Order.Descending} significa prendiamo la colonna delle vittorie e poi ordiniamola dal valore più grande al più piccolo. Avendo più condizioni, la seconda parte di Table.Sort diventa una lista di liste, dove abbiamo più liste insieme con un ordine gerarchico: Vittorie #1, Rating #2, Team #3. Ciò che vediamo a schermo è quindi lo specchio esatto di ciò che vediamo lato codice.
Conclusione
I modi per ordinare i dati in Excel sono vari e disparati, includendo le funzionalità standard, le funzioni e Power Query. A seconda del caso, potresti voler utilizzare tutte e tre le possibilità - anche se prediligo di lavorare con funzioni o Power Query, dato che trovo l'ordinamento dalla tabella poco "solida", in particolare se si lavora in molti sul stesso file. Quando ti abitui a lavorare con Excel e con le tabelle, non guarderai più i dati di partenza, quindi ordinarli risulta quasi irrilevante.
Se hai dei casi specifici che vorresti vedere affrontati in questa guida, fammi sapere nei commenti!
Sono un formatore e consulente esperto nell’uso e nell’insegnamento di Microsoft Excel. Microsoft MVP in Excel dal 2024.
Negli ultimi 3 anni ho tenuto corsi presso realtà in multinazionali come Aruba, Bridor, IMI Orton, Primadonna e SISAL, oltre a PMI e startup di diverso genere.
Realizzo corsi di formazione Excel dedicati per aziende, supporto professionisti 1:1 a distanza con call mirate e collaboro con aziende offrendo servizi di consulenza quali creazione di business plan, dashboard di vendita e non solo.
Vuoi saperne di più? Prenota una call gratuita di 15′!



































