
Formula generica
=SORTBY(data,LEN(data),-1)
Sommario
Per ordinare le stringhe di testo in base alla lunghezza in ordine crescente o decrescente, è possibile utilizzare una formula basata sulle funzioni SORTBY e LEN. Nell'esempio mostrato, la formula in D5 è:
=SORTBY(B5:B15,LEN(B5:B15),-1)
che ordina i valori di testo nella colonna B in base alla lunghezza della stringa, in ordine decrescente.
Spiegazione
La funzione SORTBY può ordinare i valori in un intervallo con una matrice che non esiste nel foglio di lavoro.
In questo esempio, vogliamo ordinare i valori in B5: B15 in base al numero di caratteri contenuti in ciascuna stringa. Lavorando dall'interno verso l'esterno, usiamo la funzione LEN per ottenere la lunghezza di ogni valore:
LEN(B5:B15) // get length of all strings
Poiché diamo a LEN un array con 11 valori, otteniamo un array con 11 lunghezze:
(5;7;14;6;5;13;9;4;8;6;11)
Ogni numero rappresenta la lunghezza del carattere di un valore in B5: B11.
Questo array viene restituito direttamente alla funzione SORTBY come argomento by_array1:
=SORTBY(B5:B15,(5;7;14;6;5;13;9;4;8;6;11),-1)
La funzione SORTBY consente l'ordinamento in base a uno o più array "ordina per", purché le dimensioni siano compatibili con i dati di origine. In questo caso, ci sono 11 righe nei dati di origine e 11 righe nell'array restituito da LEN, quindi il requisito è soddisfatto.
La funzione SORTBY utilizza la matrice di lunghezze restituite da LEN per ordinare i valori in B5: B15 e restituisce i risultati ordinati a D5 in una matrice dinamica. Poiché l'ordinamento è impostato su -1, i valori vengono ordinati in ordine inverso (decrescente) in base alla lunghezza. Usa un 1 positivo per ordinare in ordine crescente.