Linda ha una colonna che contiene caratteri alfanumerici. Deve mantenere i caratteri numerici ed eliminare quelli alfabetici. Ad esempio, una cella può contenere 10003E111 e lei vuole finire con 10003111.

Ci sono alcuni modi per affrontare questo problema. Prima di procedere con qualsiasi soluzione, tuttavia, dovresti assicurarti di non provare a cambiare qualcosa che non è veramente rotto. Ad esempio, ti consigliamo di assicurarti che la “E” che appare nel numero non faccia parte del formato del numero, in altre parole, una designazione di esponenziazione. Se lo è, allora non vuoi davvero rimuovere il carattere perché finirà per cambiare la natura del numero sottostante.

Se stabilisci che i caratteri non fanno parte del formato del numero, puoi prima provare a utilizzare le formule per rimuovere i caratteri alfabetici. Se i valori che vuoi modificare sono nella colonna A, puoi inserire la seguente formula (molto lunga) nella colonna B:

=MID(A1,MATCH(TRUE,ISERROR(1MID(A1,ROW(INDIRECT ("1:"&LEN(A1))),1)),0),-MATCH(TRUE,ISERROR(1MID (A1,ABS(ROW(INDIRECT("1:"&LEN(A1)))-LEN(A1)-1),1))

,0)+LEN(A1)+2-MATCH(TRUE,ISERROR(1*MID(A1,ROW (INDIRECT("1:"&LEN(A1))),1)),0))

Assicurati di inserirlo come formula di matrice premendo Ctrl + Maiusc + Invio. Quindi inserisci quanto segue nella colonna C:

=SUBSTITUTE(A1,B1,"")

Il risultato è che la colonna C contiene i valori della colonna A, senza i caratteri alfabetici. È possibile utilizzare Incolla speciale per copiare le informazioni dalla colonna C a un’altra colonna in modo da ottenere i valori effettivi anziché i risultati della formula.

Questo approccio può funzionare alla grande per un utilizzo a breve termine su una singola cartella di lavoro, ma se è necessario eseguire questo tipo di elaborazione dei dati più spesso, è necessario creare una funzione definita dall’utente per eseguire l’elaborazione. Ecco un esempio:

Function OnlyNums(sWord As String)

Dim sChar As String     Dim x As Integer     Dim sTemp As String

sTemp = ""

For x = 1 To Len(sWord)

sChar = Mid(sWord, x, 1)

If Asc(sChar) >= 48 And _           Asc(sChar) <= 57 Then             sTemp = sTemp & sChar         End If     Next     OnlyNums = Val(sTemp)

End Function

Utilizzi questa funzione chiamandola dall’interno di una cella del foglio di lavoro:

=OnlyNums(A1)

La funzione restituisce un valore numerico. Se vuoi creare una macro ancora più breve per eseguire l’elaborazione, considera quanto segue:

Function StripChar(aText As String)

Dim I As Integer

StripChar = ""

For I = 1 To Len(aText)

aChar = Mid(aText, I, 1)

Select Case aChar             Case "0" To "9"

StripChar = StripChar & aChar         End Select     Next End Function

Per usare questa funzione, usa uno dei seguenti nel tuo foglio di lavoro:

=STRIPCHAR(A1)

=VALUE(STRIPCHAR(A1))

Il primo restituisce una stringa di testo composta da cifre, il secondo restituisce la versione numerica di quella stringa.

_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 (3840) si applica a Microsoft Excel 97, 2000, 2002 e 2003. Puoi trovare una versione di questo suggerimento per l’interfaccia a nastro di Excel (Excel 2007 e versioni successive) qui: