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 travels, Finland, Norway, mountains, squash, photography, Drones and RC Helicopter
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 🙂
cioa, e complimenti, ma dovendo dare in ingresso riga e colonna…come lo si modifica?
SALVE, IO DA UNA COLONNA ALFA NUMERICA ES.: PAOLO ROSSI 120 DOVREI ESTRARRE IL NUMERO E METTERLO IN UN’
ALTRA COLONNA. GRAZIE
Ciao, ho provato la Function e funziona, io però avrei una necessità diversa, ovvero in una cella ho delle descrizioni, tipo:
“YYY27012020 PINCOPALLO SRL 36100 VICENZA VI VIA DEL PIFFERO 44 ID123456789010T 889911 ANNO 2020” cioè ci sono tanti numeri, a me interessa solo 889911 ma a parte questo esiste un modo per mettere in un altra cella tutti i numeri presenti separati da spazio? Quindi “27012020 36100 44 123456789010 889911 2020” ?
Grazie