Formula Excel: ordina testo e numeri con la formula -

Formula generica

=COUNTIF(data,"<="&A1)+(COUNT(data)*ISTEXT(A1))

Sommario

Per ordinare dinamicamente i dati con numeri e testo in ordine alfabetico è possibile utilizzare una formula per generare un rango numerico in una colonna helper, quindi utilizzare INDICE e CONFRONTA per visualizzare i valori in base al rango. Nell'esempio mostrato la formula in C5 è:

=COUNTIF(data,"<="&B5)+(COUNT(data)*ISTEXT(B5))

dove "dati" è l'intervallo denominato B5: B13.

Spiegazione

Questa formula genera prima un valore di rango utilizzando un'espressione basata su COUNTIF:

=COUNTIF(data,"<="&B5)

che è spiegato più dettagliatamente qui. Se i dati contengono tutti i valori di testo o tutti i valori numerici, la classificazione sarà corretta. Tuttavia, se i dati includono testo e numeri, è necessario "spostare" il rango di tutti i valori di testo per tenere conto dei valori numerici. Questo viene fatto con la seconda parte della formula qui:

+(COUNT(data)*ISTEXT(B7))

Qui, usiamo la funzione COUNT per ottenere un conteggio di valori numerici nei dati, quindi moltiplichiamo il risultato per il risultato logico di ISTEXT, che verifica se il valore è testo e restituisce TRUE o FALSE. Questo annulla efficacemente il risultato COUNT quando stiamo lavorando con un numero nella riga corrente.

Gestione dei duplicati

Se i dati contengono duplicati, la formula può essere modificata come mostrato di seguito per assegnare una classificazione sequenziale ai valori che appaiono più di una volta:

=COUNTIF(data,"<"&B5)+(COUNT(data)*ISTEXT(B5))+COUNTIF($B$5:B5,B5)

Questa versione regola la logica della funzione CONTA.SE iniziale e aggiunge un'altra CONTA.SE con un riferimento in espansione per incrementare i duplicati.

Visualizza i valori ordinati

Per recuperare e visualizzare i valori ordinati in ordine alfabetico utilizzando il valore di rango calcolato, E5 contiene la seguente formula INDICE e CONFRONTA:

=INDEX(data,MATCH(ROWS($E$5:E5),rank,0))

dove "data" è l'intervallo denominato B5: B13 e "rank" è l'intervallo denominato C5: C13.

Per ulteriori informazioni su come funziona questa formula, vedere l'esempio qui.

Trattare con spazi vuoti

Le celle vuote genereranno un rango pari a zero. Supponendo che tu voglia ignorare le celle vuote, questo funziona bene perché la formula INDICE e CONFRONTA sopra inizia da 1. Tuttavia, vedrai # N / A errori alla fine dei valori ordinati, uno per ogni cella vuota. Un modo semplice per gestire questo è avvolgere la formula INDICE e CONFRONTA in SE.ERRORE in questo modo:

=IFERROR(INDEX(data,MATCH(ROWS($E$5:E5),rank,0)),"")

Articoli interessanti...