Trovare la posizione del primo carattere non numerico in una stringa

Antonio ha un sacco di dati in un foglio di lavoro composti da cifre e altri caratteri. Ad esempio, potrebbe avere una cella che contiene “1234567Blu”. Antonio vuole essere in grado di capire la posizione del primo carattere non numerico. Nell’esempio del testo “1234567Blu” Antonio vuole un modo per capire che il primo carattere non numerico è in posizione 8.

Ci sono due modi principali per ottenere il valore che desideri. Il primo consiste nell’utilizzare una formula di matrice per calcolare la posizione. La seguente formula di matrice (inserita utilizzando Ctrl+Maiusc+Invio) funzionerà nella maggior parte dei casi:

=CONFRONTA(VERO;VAL.ERRORE(VALORE(STRINGA.ESTRAI(A1;RIF.RIGA(INDIRETTO("1:"&LUNGHEZZA(A1)));1)));0)

Gli unici casi in cui questa formula di matrice non funzionerà sono quelli in cui la cella A1 è vuota o contiene un valore strettamente numerico. Se il tuo elenco può contenere questo tipo di dati (o nessun dato), dovresti prendere in considerazione l’utilizzo di una formula di matrice leggermente più lunga:

=SE(LUNGHEZZA(A1)=0;0;MIN(SE(1*VAL.NUMERO(1*STRINGA.ESTRAI(A1;RIF.RIGA(INDIRETTO("A1:A"&LUNGHEZZA(A1)));1))=0;RIF.RIGA(INDIRETTO("A1:A"&LUNGHEZZA(A1)));LUNGHEZZA(A1)+1)))*(VAL.NUMERO(A1)=FALSO)

Ricorda che questa è una singola formula di matrice, inserita utilizzando Ctrl+Maiusc+Invio. Gestirà correttamente le istanze in cui A1 non contiene caratteri non numerici (come in una cella vuota o un valore come “123”).

Un’altra possibile formula di matrice che dovrebbe restituire la posizione desiderata è la seguente. Questo dovrebbe gestire bene le celle vuote e i valori strettamente numerici, ma è più breve della formula di matrice presentata in precedenza:

=SE.ERRORE(CONFRONTA(1;VAL.ERR(STRINGA.ESTRAI(A1;RIF.RIGA(INDIRETTO("1:"&LUNGHEZZA(A1)));1)*1)*1;);)

Ovviamente, l’altro modo in cui puoi gestire la ricerca della posizione del primo carattere non numerico è creare una funzione definita dall’utente. Esistono molti modi diversi per implementare una macro di questo tipo. Uno dei modi più semplici è semplicemente scorrere ogni carattere e darlo in pasto alla macro. Quando viene trovato un carattere che è al di fuori dell’intervallo del codice ASCII per le cifre (da 48 a 57), allora sai di aver trovato la prima posizione. La seguente macro mostra un modo per eseguire questo tipo di tecnica:

Questo contenuto è riservato agli abbonati

Solo gli utenti con Abbonamento VBA Coder oppure Ultimate possono visionarlo.

Se sei già abbonato Accedi per sbloccare il contenuto!

In caso contrario abbonati qui! L'abbonamento è conveniente.

E puoi interromperlo in ogni momento e in completa autonomia.

ABBONATI

(puoi renderti conto di quanti siano i contenuti riservati

raggiungendo questa pagina)

Tags: , , , , , , , , , , ,

Ti è stato utile?