Formula Excel: dividi testo e numeri -

Sommario

Formula generica

=MIN(FIND((0,1,2,3,4,5,6,7,8,9),A1&"0123456789"))

Sommario

Per separare testo e numeri, è possibile utilizzare una formula basata sulla funzione TROVA, la funzione MIN e la funzione LEN con la funzione SINISTRA o DESTRA, a seconda che si desideri estrarre il testo o il numero. Nell'esempio mostrato, la formula in C5 è:

=MIN(FIND((0,1,2,3,4,5,6,7,8,9),B5&"0123456789"))

che restituisce 7, la posizione del numero 3 nella stringa "apple30".

Spiegazione

Panoramica

La formula sembra complessa, ma in realtà i meccanismi sono abbastanza semplici.

Come con la maggior parte delle formule che dividono o estraggono testo, la chiave è individuare la posizione della cosa che stai cercando. Una volta ottenuta la posizione, puoi utilizzare altre funzioni per estrarre ciò di cui hai bisogno.

In questo caso, supponiamo che numeri e testo siano combinati e che il numero appaia dopo il testo. Dal testo originale, che appare in una cella, vuoi dividere il testo ei numeri in celle separate, in questo modo:

Originale Testo Numero
Mele 30 Mele 30
pesche24 Pesche 24
arance 12 arance 12
pesche 0 Pesche 0

Come detto sopra, la chiave in questo caso è individuare la posizione iniziale del numero, cosa che puoi fare con una formula come questa:

=MIN(FIND((0,1,2,3,4,5,6,7,8,9),A1&"0123456789"))

Una volta che hai la posizione, per estrarre solo il testo, usa:

=LEFT(A1,position-1)

E, per estrarre solo il numero, usa:

=RIGHT(A1,LEN(A1)-position+1)

Nella prima formula sopra, stiamo usando la funzione TROVA per individuare la posizione iniziale del numero. Per find_text, stiamo usando la costante dell'array (0,1,2,3,4,5,6,7,8,9), questo fa sì che la funzione FIND esegua una ricerca separata per ogni valore nella costante dell'array. Poiché la costante dell'array contiene 10 numeri, il risultato sarà un array con 10 valori. Ad esempio, se il testo originale è "mele30", l'array risultante sarà:

(8,10,11,7,13,14,15,16,17,18)

Ogni numero in questo array rappresenta la posizione di un elemento nella costante dell'array all'interno del testo originale.

Successivamente la funzione MIN restituisce il valore più piccolo nell'elenco, che corrisponde alla posizione del primo numero che appare nel testo originale. In sostanza, la funzione FIND ottiene tutte le posizioni dei numeri e MIN ci dà la prima posizione dei numeri: si noti che 7 è il valore più piccolo nell'array, che corrisponde alla posizione del numero 3 nel testo originale.

Ti starai chiedendo quale sia la strana costruzione di within_text nella funzione find:

B5&"0123456789"

Questa parte della formula concatena ogni possibile numero 0-9 con il testo originale in B5. Sfortunatamente, TROVA non restituisce zero quando un valore non viene trovato, quindi questo è solo un modo intelligente per evitare errori che potrebbero verificarsi quando un numero non viene trovato.

In questo esempio, poiché si presume che il numero apparirà sempre per secondo nel testo originale, funziona bene perché MIN forza la restituzione solo della più piccola, o prima occorrenza, di un numero. Finché un numero appare nel testo originale, quella posizione verrà restituita.

Se il testo originale non contiene numeri, verrà restituita una posizione "fasulla" uguale alla lunghezza del testo originale + 1. Con questa posizione fasulla, la formula SINISTRA sopra restituirà ancora il testo e la formula DESTRA restituirà una stringa vuota ("").

Buoni collegamenti

Formula di Rick Rothstein su Mr Excel

Articoli interessanti...