Funzione SORTBY di Excel - ordinamento personalizzato con formula

  • Condividi Questo
Michael Brown

Oggi vedremo da vicino la sintassi e gli utilizzi tipici della nuova funzione SORTBY della matrice dinamica. Imparerete come ordinare in modo personalizzato in Excel con una formula, ordinare casualmente un elenco, disporre le celle in base alla lunghezza del testo e molto altro ancora.

Microsoft Excel offre una serie di modi per ordinare i dati di testo in ordine alfabetico, le date in ordine cronologico e i numeri dal più piccolo al più grande o dal più alto al più basso. Esiste anche un modo per ordinare in base a elenchi personalizzati. Oltre alla funzionalità di ordinamento convenzionale, Excel 365 introduce un modo nuovissimo per ordinare i dati con le formule: molto comodo e incredibilmente semplice da usare!

    Funzione SORTBY di Excel

    La funzione SORTBY di Excel è progettata per ordinare un intervallo o una matrice in base ai valori di un altro intervallo o matrice. L'ordinamento può essere effettuato in base a una o più colonne.

    SORTBY è una delle sei nuove funzioni di matrice dinamica disponibili in Excel per Microsoft 365 e Excel 2021. Il risultato è una matrice dinamica che si estende alle celle vicine e si aggiorna automaticamente quando i dati di origine cambiano.

    La funzione SORTBY ha un numero variabile di argomenti: i primi due sono obbligatori e gli altri sono facoltativi:

    SORTBY(array, by_array1, [sort_order1], [by_array2, sort_order2],...)

    Array (obbligatorio) - l'intervallo di celle o la matrice di valori da ordinare.

    Per_array1 (obbligatorio) - l'intervallo o la matrice per cui ordinare.

    Ordinamento1 (opzionale) - l'ordine di ordinamento:

    • 1 o omesso (valore predefinito) - ascendente
    • -1 - decrescente

    Per_array2 / Ordinamento2 , ... (opzionale) - coppie array/ordine aggiuntive da usare per l'ordinamento.

    Nota importante: attualmente la funzione SORTBY è disponibile solo con gli abbonamenti a Microsoft 365 e con Excel 2021. In Excel 2019, Excel 2016 e versioni precedenti la funzione SORTBY non è disponibile.

    Funzione SORTBY - 4 cose da ricordare

    Affinché una formula SORTBY di Excel funzioni correttamente, ci sono alcuni punti importanti da tenere in considerazione:

    • Per_array Gli argomenti devono essere alti una riga o larghi una colonna.
    • Il array e tutti per_array Gli argomenti devono avere dimensioni compatibili. Ad esempio, quando si ordina per due colonne, array , per_array1 e per_array2 devono avere lo stesso numero di righe, altrimenti si verificherà un errore #VALUE.
    • Se la matrice restituita da SORTBY è il risultato finale (emesso in una cella e non passato a un'altra funzione), Excel crea un intervallo di versamento dinamico e lo popola con i risultati. Assicuratevi quindi di avere abbastanza celle vuote in basso e/o a destra della cella in cui inserite la formula, altrimenti otterrete un errore #SPILL.
    • I risultati delle formule SORTBY si aggiornano automaticamente ogni volta che i dati di origine vengono modificati. Tuttavia, le nuove voci aggiunte al di fuori della matrice a cui si fa riferimento nella formula non vengono incluse nei risultati, a meno che non si aggiorni l'attributo array Per espandere automaticamente la matrice di riferimento, convertire l'intervallo di origine in una tabella Excel o creare un intervallo dinamico con nome.

    Formula SORTBY di base in Excel

    Ecco uno scenario tipico di utilizzo di una formula SORTBY in Excel:

    Supponiamo di avere un elenco di progetti con l'opzione Valore Si desidera ordinare i progetti in base al loro valore su un foglio separato. Poiché gli altri utenti non hanno bisogno di vedere i numeri, si preferisce non includere il campo Valore nei risultati.

    L'operazione può essere facilmente eseguita con la funzione SORTBY, per la quale si forniscono i seguenti argomenti:

    • Array è A2:A10 - dal momento che non si desidera che l'immagine Valore da visualizzare nei risultati, la si lascia fuori dall'array.
    • Per_array1 è B2:B10 - ordinare per Valore .
    • Ordinamento1 è -1 - decrescente, cioè dal più alto al più basso.

    Mettendo insieme i ragionamenti, si ottiene questa formula:

    =ORDINAZIONE(A2:B10, B2:B10, -1)

    Per semplicità, utilizziamo la formula nello stesso foglio: la inseriamo in D2 e premiamo il tasto Invio. I risultati si "riversano" automaticamente in tutte le celle necessarie (D2:D10 nel nostro caso). Tecnicamente, però, la formula si trova solo nella prima cella e cancellandola da D2 si cancellano tutti i risultati.

    Quando viene utilizzata in un altro foglio, la formula assume la forma seguente:

    =SORTBY(Foglio1!A2:A10, Foglio1!B2:B10, -1)

    Dove Foglio1 è il foglio di lavoro contenente i dati originali.

    Utilizzo della funzione SORTBY in Excel - Esempi di formule

    Di seguito sono riportati alcuni esempi di utilizzo di SORTBY, che si spera si rivelino utili e perspicaci.

    Ordinamento per più colonne

    La formula di base discussa in precedenza ordina i dati in base a una colonna, ma cosa succede se è necessario aggiungere un ulteriore livello di ordinamento?

    Supponiamo che la nostra tabella di esempio abbia due campi, Stato (colonna B) e Valore (colonna C) , vogliamo ordinare prima per Stato in ordine alfabetico e poi per Valore in discesa.

    Per ordinare in base a due colonne, basta aggiungere un'altra coppia di elementi del tipo per_array / ordine_di_ordine argomenti:

    • Array è A2:C10 - questa volta vogliamo includere tutte e tre le colonne nei risultati.
    • Per_array1 è B2:B10 - prima, ordinare per Stato .
    • Ordinamento1 è 1 - ordina in ordine alfabetico dalla A alla Z.
    • Per_array2 è C2:C10 - quindi, ordinare per Valore .
    • Ordinamento2 è -1 - ordina dal più grande al più piccolo.

    Il risultato è la seguente formula:

    =SORTBY(A2:B10, B2:B10, 1, C2:C10, -1)

    Che riorganizza i nostri dati esattamente come li abbiamo istruiti:

    Ordinamento personalizzato in Excel con una formula

    Per ordinare i dati in un ordine personalizzato, è possibile utilizzare la funzione di ordinamento personalizzato di Excel o costruire una formula di MATCH SORTBY in questo modo:

    SORTBY(array, MATCH( intervallo_da_ordinare , elenco_personalizzato , 0))

    Osservando più da vicino il nostro set di dati, probabilmente troverete più conveniente ordinare i progetti in base al loro stato "logico", ad esempio per importanza, piuttosto che in ordine alfabetico.

    Per farlo, si crea prima un elenco personalizzato nell'ordine desiderato ( In corso , Completato , In attesa ) digitando ogni valore in una cella separata dell'intervallo E2:E4.

    E poi, utilizzando la formula generica di cui sopra, forniamo l'intervallo di origine per array (A2:C10), il Stato colonna per intervallo_da_ordinare (B2:B10) e l'elenco personalizzato che abbiamo creato per elenco_personalizzato (E2:E4).

    =SORTBY(A2:C10, MATCH(B2:B10, E2:E4, 0))

    Il risultato è che i progetti sono ordinati in base al loro stato esattamente come richiesto:

    Per ordinare l'elenco personalizzato in ordine inverso, mettere -1 al posto di ordinamento1 argomento:

    =SORTBY(A2:C10, MATCH(B2:B10, E2:E4, 0), -1)

    E i progetti saranno ordinati nella direzione opposta:

    Se si desidera ordinare ulteriormente i record all'interno di ogni stato, non c'è problema: basta aggiungere un ulteriore livello di ordinamento alla formula, ad esempio per Valore (C2:C10) e definire l'ordine di ordinamento desiderato, nel nostro caso ascendente:

    =SORTBY(A2:C10, MATCH(B2:B10, E2:E5, 0), 1, C2:C10, 1)

    Un grande vantaggio della formula SORTBY rispetto alla funzione di ordinamento personalizzato di Excel è che la formula si aggiorna automaticamente ogni volta che i dati originali cambiano, mentre la funzione richiede una pulizia e un nuovo ordinamento a ogni modifica.

    Come funziona questa formula:

    Come già detto, la funzione SORTBY di Excel può elaborare solo array di "ordinamento per" le cui dimensioni sono compatibili con l'array di origine. Poiché l'array di origine (C2:C10) contiene 9 righe e l'elenco personalizzato (E2:E4) solo 3 righe, non è possibile fornirlo direttamente alla funzione per_array Utilizziamo invece la funzione MATCH per creare una matrice di 9 righe:

    MATCH(B2:B10, E2:E5, 0)

    In questo caso, si utilizza il Stato (B2:B10) come valori di ricerca e il nostro elenco personalizzato (E2:E5) come array di ricerca. L'ultimo argomento è impostato su 0 per cercare le corrispondenze esatte. Il risultato è un array di 9 numeri, ognuno dei quali rappresenta la posizione relativa di un dato Stato nell'elenco personalizzato:

    {1;3;2;1;3;2;2;1;2}

    Questa matrice va direttamente all'array per_array della funzione SORTBY e la costringe a posizionare i dati nell'ordine corrispondente agli elementi della matrice, cioè prima le voci rappresentate da 1, poi quelle rappresentate da 2 e così via.

    Ordinamento casuale in Excel con una formula

    Nelle versioni precedenti di Excel, è possibile eseguire un ordinamento casuale con la funzione RAND, come spiegato in questa esercitazione: Come ordinare casualmente un elenco in Excel.

    Nel nuovo Excel è possibile utilizzare una funzione RANDARRAY più potente insieme a SORTBY:

    SORTBY( array , RANDARRAY(RIGHE( array )))

    Dove array è il dato di origine che si vuole rimescolare.

    Questa formula generica funziona sia per un elenco composto da una sola colonna sia per un intervallo a più colonne.

    Ad esempio, per ordinare casualmente un elenco in A2:A10, utilizzare questa formula:

    =SORTBY(A2:A10, RANDARRAY(ROWS(A2:A10))

    Per mescolare i dati in A2:C10 mantenendo le righe unite, utilizzare questo:

    =SORTBY(A2:C10, RANDARRAY(ROWS(A2:C10))

    Come funziona questa formula:

    La funzione RANDARRAY produce una matrice di numeri casuali da utilizzare per l'ordinamento, da passare al metodo per_array di SORTBY. Per specificare il numero di numeri casuali da generare, si conta il numero di righe nell'intervallo di origine utilizzando la funzione ROWS e si "dà in pasto" tale numero al parametro file argomento di RANDARRAY. Ecco!

    Nota: come il suo predecessore, RANDARRAY è una funzione volatile e genera una nuova matrice di numeri casuali ogni volta che il foglio di lavoro viene ricalcolato. Di conseguenza, i dati verranno ricorsi ad ogni modifica del foglio. Per evitare il ricorso automatico, è possibile utilizzare l'opzione Incolla speciale > Valori per sostituire le formule con i loro valori.

    Ordinare le celle in base alla lunghezza delle stringhe

    Per ordinare le celle in base alla lunghezza delle stringhe di testo che contengono, utilizzare la funzione LEN per contare il numero di caratteri in ogni cella e fornire le lunghezze calcolate alla funzione per_array argomento di SORTBY. Il ordine_di_ordine può essere impostato a 1 o -1, a seconda dell'ordine di ordinamento preferito.

    Per ordinare la stringa di testo dal più piccolo al più grande:

    SORTBY(array, LEN(array), 1)

    Per ordinare la stringa di testo dal più grande al più piccolo:

    SORTBY(array, LEN(array), -1)

    Ecco una formula che dimostra questo approccio su dati reali:

    =ORDINAZIONE(A2:A7, LEN(A2:A7), 1)

    Dove A2:A7 sono le celle originali che si desidera ordinare per lunghezza del testo in ordine crescente:

    SORTBY vs. SORT

    Nel gruppo delle nuove funzioni di array dinamico di Excel, ve ne sono due progettate per l'ordinamento. Di seguito elenchiamo le differenze e le somiglianze più importanti, nonché i casi in cui è meglio utilizzarle.

    • A differenza della funzione SORT, SORTBY non richiede che l'array "sort by" faccia parte dell'array di origine, né che appaia nei risultati. Pertanto, quando il compito è quello di ordinare un intervallo in base a un altro array indipendente o a un elenco personalizzato, SORTBY è la funzione giusta da utilizzare. Se si desidera ordinare un intervallo in base ai suoi valori, SORT è più appropriato.
    • Entrambe le funzioni supportano più livelli di ordinamento e possono essere concatenate con altre funzioni di array dinamici e convenzionali.
    • Entrambe le funzioni sono disponibili solo per gli utenti di Excel 365 e Excel 2021.

    La funzione SORTBY di Excel non funziona

    Se la formula SORTBY restituisce un errore, è probabile che sia dovuto a uno dei seguenti motivi.

    Argomenti di by_array non validi

    Il per_array Gli argomenti devono essere una singola riga o una singola colonna e di dimensioni compatibili con il file array Ad esempio, se array ha 10 righe, per_array deve includere anche 10 righe, altrimenti si verifica un errore #VALORE!

    Argomenti di sort_order non validi

    Il ordine_di_ordine può essere solo 1 (ascendente) o -1 (discendente). Se non viene impostato alcun valore, SORTBY assume per default l'ordine ascendente. Se viene impostato un valore diverso, viene restituito un errore #VALUE!

    Non c'è abbastanza spazio per i risultati

    Come qualsiasi altra funzione di array dinamico, SORTBY riversa i risultati in un intervallo automaticamente ridimensionabile e aggiornabile. Se non ci sono abbastanza celle vuote per visualizzare tutti i valori, viene lanciato un errore #SPILL!

    La cartella di lavoro sorgente è chiusa

    Se una formula SORTBY fa riferimento a un altro file Excel, entrambe le cartelle di lavoro devono essere aperte. Se la cartella di lavoro di origine è chiusa, si verifica un errore #REF!

    La versione di Excel in uso non supporta gli array dinamici

    Se utilizzata in una versione pre-dinamica di Excel, la funzione SORT restituisce un errore #NAME?

    Ecco come utilizzare la funzione SORTBY in Excel per eseguire ordinamenti personalizzati e altre operazioni. Vi ringrazio per la lettura e spero di vedervi sul nostro blog la prossima settimana!

    Eserciziario da scaricare

    Formule SORTBY di Excel (file .xlsx)

    Michael Brown è un appassionato di tecnologia dedicato con una passione per la semplificazione di processi complessi utilizzando strumenti software. Con oltre un decennio di esperienza nel settore tecnologico, ha affinato le sue competenze in Microsoft Excel e Outlook, nonché in Fogli Google e Documenti. Il blog di Michael è dedicato alla condivisione delle sue conoscenze e competenze con gli altri, fornendo suggerimenti e tutorial facili da seguire per migliorare la produttività e l'efficienza. Che tu sia un professionista esperto o un principiante, il blog di Michael offre spunti preziosi e consigli pratici per ottenere il massimo da questi strumenti software essenziali.