Sommario
L'esercitazione mostra come utilizzare la funzione SORT per ordinare dinamicamente gli array di dati. Imparerete una formula per ordinare alfabeticamente in Excel, disporre i numeri in ordine crescente o decrescente, ordinare per più colonne e molto altro ancora.
La funzionalità di ordinamento esiste da molto tempo, ma con l'introduzione degli array dinamici in Excel 365 è apparso un modo incredibilmente semplice per ordinare con le formule. Il bello di questo metodo è che i risultati si aggiornano automaticamente quando i dati di origine cambiano.
Funzione SORT di Excel
La funzione SORT di Excel ordina il contenuto di una matrice o di un intervallo per colonne o righe, in ordine crescente o decrescente.
Il risultato è una matrice dinamica che si estende automaticamente alle celle vicine in senso verticale o orizzontale, a seconda della forma della matrice di origine.
La sintassi della funzione SORT è la seguente:
Dove:
Array (obbligatorio) - è una matrice di valori o un intervallo di celle da ordinare. Possono essere valori qualsiasi, come testo, numeri, date, orari, ecc.
Ordina_indice (opzionale) - un numero intero che indica la colonna o la riga da ordinare. Se omesso, viene utilizzato l'indice predefinito 1.
Ordinamento (opzionale) - definisce l'ordine di ordinamento:
- 1 o omesso (valore predefinito) - ordine crescente, cioè dal più piccolo al più grande
- -1 - ordine decrescente, cioè dal più grande al più piccolo
By_col (opzionale) - un valore logico che indica la direzione dell'ordinamento:
- FALSO o omesso (valore predefinito) - ordina per riga. Questa opzione verrà usata quasi sempre.
- VERO - ordina per colonna. Utilizzare questa opzione se i dati sono organizzati orizzontalmente in colonne come in questo esempio.
Funzione SORT di Excel - suggerimenti e note
SORT è una nuova funzione di array dinamico e come tale ha un paio di specificità che è bene conoscere:
- Attualmente la funzione SORT è disponibile solo in Microsoft 365 e in Excel 2021. Excel 2019 e Excel 2016 non supportano le formule di array dinamico, pertanto la funzione SORT non è disponibile in queste versioni.
- Se la matrice restituita da una formula SORT è il risultato finale (cioè non viene passata a un'altra funzione), Excel crea dinamicamente un intervallo di dimensioni adeguate e lo popola con i valori ordinati. Assicuratevi quindi di avere sempre un numero sufficiente di celle vuote in basso e/o a destra della cella in cui inserite la formula, altrimenti si verificherà un errore #SPILL.
- I risultati si aggiornano dinamicamente in base alle modifiche dei dati di origine. Tuttavia, i dati di array fornito alla formula non si estende automaticamente per includere le nuove voci aggiunte al di fuori della formula di riferimento. array Per includere tali elementi, è necessario aggiornare il file array nella formula, oppure convertire l'intervallo di origine in una tabella, come mostrato in questo esempio, o creare un intervallo dinamico con nome.
Formula SORT di base di Excel
Questo esempio mostra una formula di base per ordinare i dati in Excel in ordine crescente e decrescente.
Supponiamo che i dati siano disposti in ordine alfabetico, come mostrato nella schermata seguente, e che si vogliano ordinare i numeri della colonna B senza interrompere o mescolare i dati.
Formula per ordinare in ordine crescente
Per ordinare i valori della colonna B dal più piccolo al più grande, ecco la formula da utilizzare:
=ORDINE(A2:B8, 2, 1)
Dove:
- A2:B8 è la matrice di origine
- 2 è il numero della colonna da ordinare
- 1 è l'ordine crescente
Poiché i nostri dati sono organizzati in righe, l'ultimo argomento può essere omesso per avere come valore predefinito FALSE - ordinamento per righe.
È sufficiente inserire la formula in una cella vuota (D2 nel nostro caso), premere Invio e i risultati si riverseranno automaticamente in D2:E8.
Formula per ordinare in ordine decrescente
Per ordinare i dati in modo decrescente, cioè dal più grande al più piccolo, impostare il parametro ordine_di_ordine a -1 in questo modo:
=ORDINE(A2:B8, 2, -1)
Inserite la formula nella cella in alto a sinistra dell'intervallo di destinazione e otterrete questo risultato:
In modo analogo, è possibile ordinare i valori di testo in ordine alfabetico dalla A alla Z o dalla Z alla A.
Come ordinare i dati in Excel utilizzando una formula
Gli esempi seguenti mostrano alcuni usi tipici della funzione SORT in Excel e un paio di usi non banali.
SORTEGGIO di Excel per colonna
Quando si ordinano i dati in Excel, nella maggior parte dei casi si cambia l'ordine delle righe, ma quando i dati sono organizzati orizzontalmente con righe contenenti etichette e colonne contenenti record, potrebbe essere necessario ordinare da sinistra a destra, anziché dall'alto in basso.
Per ordinare per colonna in Excel, impostare il parametro da_col a VERO. In questo caso, ordinamento_indice rappresenterà una riga, non una colonna.
Ad esempio, per ordinare i dati sottostanti in base alla quantità, dalla più alta alla più bassa, utilizzare questa formula:
=ORDINE(B1:H2, 2, 1, TRUE)
Dove:
- B1:H2 sono i dati di origine da ordinare
- 2 è l'indice di ordinamento, dato che stiamo ordinando i numeri della seconda riga
- -1 indica l'ordine decrescente
- VERO significa ordinare le colonne, non le righe
Ordinamento per più colonne in ordine diverso (ordinamento multilivello)
Quando si lavora con modelli di dati complessi, spesso si ha bisogno di un ordinamento a più livelli. È possibile farlo con una formula? Sì, facilmente! Si tratta di fornire costanti di array per il parametro ordinamento_indice e ordine_di_ordine argomenti.
Ad esempio, per ordinare i dati sottostanti prima per Regione (colonna A) da A a Z, e poi da Quantità . (colonna C) dal più piccolo al più grande, impostare i seguenti argomenti:
- Array è il dato in A2:C13.
- Ordina_indice è la costante dell'array {1,3}, poiché prima si ordina per Regione (1a colonna), e poi da Quantità . (3a colonna).
- Ordinamento è la costante dell'array {1,-1}, poiché la prima colonna deve essere ordinata in ordine crescente e la terza colonna in ordine decrescente.
- Per_col viene omesso perché viene effettuato l'ordinamento delle righe, che è predefinito.
Mettendo insieme i ragionamenti, si ottiene questa formula:
=SORT(A2:C13, {1,3}, {1,-1})
I valori di testo nella prima colonna sono ordinati in ordine alfabetico e i numeri nella terza colonna dal più grande al più piccolo:
Ordinamento e filtro in Excel
Se si desidera filtrare i dati con alcuni criteri e mettere in ordine l'output, utilizzare le funzioni SORT e FILTER insieme:
SORT(FILTRO(array, intervallo_di_criteri = criteri ), [sort_index], [sort_order], [by_col])La funzione FILTRO ottiene un array di valori in base ai criteri definiti dall'utente e lo passa al primo argomento di SORT.
La cosa migliore di questa formula è che produce i risultati come un intervallo dinamico di versamenti, senza dover premere Ctrl + Maiusc + Invio o indovinare in quante celle copiarli. Come al solito, si digita una formula nella cella più in alto e si preme il tasto Invio.
A titolo di esempio, estrarremo gli articoli con quantità uguale o superiore a 30 (>=30) dai dati di origine in A2:B9 e disporremo i risultati in ordine crescente.
A tale scopo, impostiamo prima la condizione, ad esempio, nella cella E2, come mostrato nell'immagine seguente, e poi costruiamo la nostra formula SORT di Excel in questo modo:
=SORT(FILTRO(A2:B9, B2:B9>=E2), 2)
Oltre a array generato dalla funzione FILTRO, specifichiamo solo il parametro ordinamento_indice Gli altri due argomenti sono stati omessi perché i valori predefiniti funzionano esattamente come ci serve (ordinamento ascendente, per riga).
Ottenere gli N valori più grandi o più piccoli e ordinare i risultati
Quando si analizzano grandi quantità di informazioni, spesso è necessario estrarre un certo numero di valori principali. Magari non solo estrarli, ma anche disporli nell'ordine desiderato e, idealmente, scegliere quali colonne includere nei risultati. Sembra complicato? Non con le nuove funzioni di array dinamico!
Ecco una formula generica:
INDICE(ORDINAMENTO(...), SEQUENZA( n ), { colonna1_da_ritornare , colonna2_da_ritornare , ...})Dove n è il numero dei valori che si desidera restituire.
Dal set di dati sottostante, supponiamo di voler ottenere un elenco di top 3 basato sui numeri della colonna C.
Per farlo, si ordina prima l'array A2:C13 in base alla terza colonna in ordine decrescente:
ORDINAMENTO(A2:C13, 3, -1)
E poi, annidare la formula di cui sopra nel primo ( array ) della funzione INDEX per ordinare l'array dal più alto al più piccolo.
Per il secondo ( numero_riga ), che indica il numero di righe da restituire, genera i numeri sequenziali richiesti utilizzando la funzione SEQUENCE. Poiché abbiamo bisogno di 3 valori superiori, utilizziamo SEQUENCE(3), che equivale a fornire una costante di array verticale {1;2;3} direttamente nella formula.
Per il terzo ( col_num ), che definisce il numero di colonne da restituire, fornisce i numeri delle colonne sotto forma di costante orizzontale. Vogliamo restituire le colonne B e C, quindi usiamo l'array {2,3}.
Alla fine si ottiene la seguente formula:
=INDICE(SORT(A2:C13, 3, -1), SEQUENCE(3), {2,3})
E produce esattamente i risultati che vogliamo:
Per tornare 3 fondo è sufficiente ordinare i dati originali dal più piccolo al più grande. A tal fine, modificare il parametro ordine_di_ordine da -1 a 1:
=INDICE(SORT(A2:C13, 3, 1), SEQUENCE(3), {2,3})
Restituisce un valore ordinato in una posizione specifica
Da un altro punto di vista, cosa succede se si desidera restituire solo una posizione specifica dell'ordinamento, ad esempio solo il primo, solo il secondo o solo il terzo record dell'elenco ordinato? Per farlo, utilizzare la versione semplificata della formula INDEX SORT discussa in precedenza:
INDICE(ORDINAMENTO(...), n , { colonna1_da_ritornare , colonna2_da_ritornare , ...})Dove n è la posizione di interesse.
Ad esempio, per ottenere una particolare posizione dall'alto (cioè dai dati ordinati in modo decrescente), utilizzare questa formula:
=INDICE(SORT(A2:C13, 3, -1), F1, {2,3})
Per ottenere una posizione specifica dal basso (cioè dai dati ordinati in modo crescente), utilizzare questa:
=INDICE(SORT(A2:C13, 3, 1), I1, {2,3})
Dove A2:C13 sono i dati di origine, F1 è la posizione dall'alto, I1 è la posizione dal basso e {2,3} sono le colonne da restituire.
Utilizzate la tabella di Excel per ottenere l'espansione automatica dell'array di ordinamento
Come è noto, la matrice ordinata si aggiorna automaticamente quando si apportano modifiche ai dati originali. Questo è il comportamento standard di tutte le funzioni di matrice dinamica, compresa SORT. Tuttavia, quando si aggiungono nuove voci al di fuori della matrice di riferimento, queste non vengono automaticamente incluse in una formula. Se si desidera che la formula risponda a tali modifiche, convertire l'intervallo di origine in una matrice completa.tabella funzionale di Excel e utilizzare riferimenti strutturati nella formula.
Per vedere come funziona in pratica, si consideri il seguente esempio.
Supponiamo di utilizzare la seguente formula SORT di Excel per disporre i valori nell'intervallo A2:B8 in ordine alfabetico:
=ORDINE(A2:B8, 1, 1)
Poi si inserisce una nuova voce nella riga 9... e si rimane delusi nel vedere che la voce appena aggiunta è esclusa dall'intervallo di versamento:
A questo punto, è necessario convertire l'intervallo di origine in una tabella: basta selezionare l'intervallo, comprese le intestazioni delle colonne (A1:B8), e premere Ctrl + T. Quando si costruisce la formula, selezionare l'intervallo di origine con il mouse e il nome della tabella verrà inserito automaticamente nella formula (si tratta di un riferimento strutturato):
=SORT(Tabella1, 1, 1)
Quando si digita una nuova voce proprio sotto l'ultima riga, la tabella si espande automaticamente e i nuovi dati vengono inclusi nell'intervallo di riempimento della formula SORT:
La funzione SORT di Excel non funziona
Se la formula SORT dà luogo a un errore, è probabile che ciò sia dovuto ai seguenti motivi.
#Errore di nome: vecchia versione di Excel
SORT è una nuova funzione e funziona solo in Excel 365 e Excel 2021. Nelle versioni precedenti in cui questa funzione non è supportata, si verifica un errore #NOME?
Errore #SPILL: qualcosa blocca il raggio di azione dello spillatore
Se una o più celle dell'intervallo di versamento non sono completamente vuote o unite, viene visualizzato un errore #SPILL! Per risolverlo, è sufficiente rimuovere il blocco. Per ulteriori informazioni, vedere Errore #SPILL! di Excel: cosa significa e come risolverlo.
Errore #VALUE: argomenti non validi
Ogni volta che si verifica un errore #VALUE!, controllare il file ordinamento_indice e ordine_di_ordine argomenti. Ordina_indice non deve superare il numero di colonne è array , e ordine_di_ordine deve essere 1 (ascendente) o -1 (discendente).
Errore #REF: la cartella di lavoro di origine è chiusa
Poiché gli array dinamici hanno un supporto limitato per i riferimenti tra le cartelle di lavoro, la funzione SORT richiede che entrambi i file siano aperti. Se la cartella di lavoro di origine è chiusa, una formula genera un errore #REF! Per risolvere il problema, basta aprire il file di riferimento.
Ecco come ordinare i dati in Excel usando la formula. Vi ringrazio per la lettura e spero di vedervi sul nostro blog la prossima settimana!
Eserciziario da scaricare
Ordinamento in Excel con formule (file .xlsx)