Abbiamo bisogno di estrarre solo i numeri da una cella alfanumerica di Excel; vediamo come fare.
Dovendo lavorare in ambiente VBA apriamo la relativa finestra.
In Excel XP o 2003
Menù Strumenti – Macro – Visual Basic Editor
In Excel 2007
Bottone di Office – Pulsante Opzioni di Excel – Impostazioni generali – Opzione Mostra scheda Sviluppo sulla barra multifunzione
A questo punto ritornando nella finestra di Excel verrà visualizzata anche la Scheda Sviluppo nella quale troviamo il pulsante Visual Basic
In Excel 2010/2013
Scheda File – Opzioni – Personalizzazone barra multifunzione – Selezionare Sviluppo nella sezione Schede principali
A questo punto ritornando nella finestra di Excel verrà visualizzata anche la Scheda Sviluppo nella quale troviamo il pulsante Visual Basic
Nella finestra Visual Basic inserire un nuovo modulo (menù Inserisci – Modulo) quindi copiare il codice riportato qui sotto:
Function estraicifre(Num As Range) As Double
Dim T As String
Dim C As String
Dim i As Integer
Dim IsNumero As Boolean
Application.Volatile True
T = Num.Value
C = ""
IsNumero = False
For i = 1 To Len(T)
If Mid(T, i, 1) = "," And IsNumero = True Then
C = C + ","
IsNumero = False
End If
If Mid(T, i, 1) <= "9" And Mid(T, i, 1) >= "0" Then
C = C + Mid(T, i, 1)
IsNumero = True
Else
IsNumero = False
End If
Next i
estraicifre = CDbl(C)
End Function
Chiudere la finestra di Visual Basic.
Posizionarsi nella cella in cui si vuole vengano estratti i numeri e inserire la seguente funzione:
=estraicifre(Num)
Dove Num è il riferimento della cella dalla quale si vuole vengano estratti solo i numeri.
Se invece hai bisogno di estrarre e sommare tra loro i numeri presenti in una cella alfanumerica di Excel clicca qui per trovare la soluzione.

Informatics, ski racer, loves Finland, Norway, mountains, squash, photography, Drones and RC Helicopter – Snapchat: andrea.perotti
Ciao,
ti posto un altro metodo per ottenere lo stesso risultato attraverso l’utilizzo di regex in Excel.
In questo modo basta cambiare il pattern della regex e la funzione potrà matchare qualsizsi cosa.. lettere, date, indirizzi email, siti, nr di telefono.. etc.
In questo caso il pattern “[0-9,\.]+” è predisposto per numeri e ./,
Ciao
Peps
Function NUMBER_EXTRACT(range As range) As String
Dim RegEx As Object, RegMatches As Object, RegMatch As Object
Set RegEx = CreateObject(“vbscript.regexp”)
With RegEx
.Global = True
.Pattern = “[0-9,\.]+”
End With
Set RegMatches = RegEx.Execute(range.Value)
For Each RegMatch In RegMatches
NUMBER_EXTRACT = NUMBER_EXTRACT & RegMatch
Next
End Function
Ciao Peps,
la procedura va in errore su .pattern…..
Ciao Antonio,
immagino tu abbia fatto copia incolla… se è così la procedura va in errore perché le virgolette che identificano il pattern non sono quelle corrette…
Dovresti vedere delle virgolette oblique “[0-9,\.]+” e tutta la riga in rosso
basta che tu le sostituisca con quelle dritte che identificano una stringa “[0-9,\.]+” e la riga torna nera e funzionante.
Fammi sapere….
Ciao
Peps
Salve molto interessante e in caso di dover estrarre solo testo es. avendo una lista tipo sotto riportata
Mario Rossi 221
Mario De Rossi 21
Mario D’Orsi 3
si vuole ottenere come restituzione Mario Rossi in due celle separate o Mario De Rossi sempre in due celle separate.
Ciao e vi ringrazio in anticipo dell’aiuto.
Grazie mille, mi hai risolto un grosssoooooo problema!!!!!
a me la funzione entra in gioco quando attivo altre macro ad una istruzione di seleziona range
Ciao,
ma dalla funzione =estraicifre(Num) non mi lascia lo zero, esempio ho questa frase TELEFONO-1:0342/815431159, ma non mi lascia lo zero come posso fare??
Salve. Io dovrei fare la somma di numeri associati ad una lettera.
Mi spiego meglio: A 2, B5, A 1. il risultato dev’essere nella colonna delle A = 3 e nella colonna delle B uguale a 5! Quindi dovrebbe prima riconoscere se il carattere presente nella cella sia A o B e poi fare la somma del valore vicino alla lettera. Nn so se mi sono spiegata 🙂 aiutooooo 🙁 🙁
si può adattare la funzione in modo che estragga 11 caratteri numerici consecutivi (variabili da una cella all’altra della stessa colonna testuale)?
Grazie mille 🙂