Trovare la prima non cifra in un valore di testo (Microsoft Excel)
Tony ha un mucchio di dati in un foglio di lavoro composto da cifre e altri caratteri. Ad esempio, potrebbe avere una cella che contiene “1234567Blue”. Tony vuole essere in grado di capire la posizione del personaggio in cui si trova il primo carattere non numerico. Nell’esempio del testo “1234567Blue” Tony vuole un modo per capire che il primo carattere non numerico è alla posizione 8.
Esistono due modi principali per ottenere il valore desiderato. Il primo è 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:
=MATCH(TRUE,ISERROR(VALUE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))),0)
Gli unici casi in cui questa formula di matrice non funzionerà è se la cella A1 è vuota o contiene un valore strettamente numerico. Se il tuo elenco può contenere questo tipo di dati (o nessun dato), dovresti considerare l’utilizzo di una formula di matrice leggermente più lunga:
=IF(LEN(A1)=0,0,MIN(IF(1ISNUMBER(1MID(A1,ROW(INDIRECT("A1:A"& LEN(A1))),1))=0,ROW(INDIRECT("A1:A"&LEN(A1))),LEN(A1)+1)))* (ISNUMBER(A1)=FALSE)
Ricorda che si tratta di una formula a matrice singola, immessa 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 celle vuote e valori strettamente numerici, ma è più breve della formula di matrice presentata in precedenza:
=IFERROR(MATCH(1,ISERR(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)1)1,),)
Ovviamente, l’altro modo in cui puoi gestire la scoperta 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 per implementare la macro è semplicemente passare da un carattere all’altro in tutto ciò che viene passato alla macro. Quando viene trovato un carattere che non rientra nell’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:
Function FirstNonDigit(str As String) Dim iChar As Integer Dim iPos As Integer Dim J As Integer Application.Volatile iPos = 0 For J = 1 To Len(str) iChar = Asc(Mid(str, J, 1)) If iChar <= 47 Or iChar >= 58 Then iPos = J Exit For End If Next J FirstNonDigit = iPos End Function
Per usare la funzione, usa semplicemente una formula come questa nel tuo foglio di lavoro:
=FirstNonDigit(A1)
Se la cella a cui fai riferimento è vuota o se contiene solo cifre, la funzione restituisce un valore 0.
_Nota: _
Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.
ExcelTips è la tua fonte di formazione economica su Microsoft Excel.
Questo suggerimento (10610) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 ed Excel in Office 365. Puoi trovare una versione di questo suggerimento per l’interfaccia del menu precedente di Excel qui: