Abbiamo bisogno di estrarre e sommare numeri presenti in una cella alfanumerica Excel; poniamo ad esempio che una cella contenga il testo AB12 – CD 10 quello che dovremo fare è estrarre il numero 12 e il numero 10 e quindi sommarli tra loro. Il risultato in questo caso sarebbe 22. Vediamo come procedere.
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 – Personalizzazione 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:
Public Function sommarenumeri(Num)
Dim filler, caratteri(), i, carattere, addendo(), segno, i_max
filler = "+"
ReDim Preserve caratteri(0)
caratteri(0) = filler
For i = 1 To Len(Num)
ReDim Preserve caratteri(i)
carattere = Mid(Num, i, 1)
If (carattere >= 0) And (carattere <= 9) Then
caratteri(i) = carattere
filler = "+"
Else
caratteri(i) = filler
End If
Next
i = 0
ReDim Preserve addendo(i)
segno = 1
For Each carattere In caratteri
If IsNumeric(carattere) Then
addendo(i) = (addendo(i) * 10) + (segno * carattere)
Else
i = i + 1
ReDim Preserve addendo(i)
If carattere = "+" Then
segno = 1
End If
End If
Next
i_max = i
sommarenumeri = 0
For i = 0 To i_max
sommarenumeri = sommarenumeri + addendo(i)
Next
End Function
Chiudere la finestra di Visual Basic.
Posizionarsi nella cella in cui si vuole vengano estratti e sommati tra loro i numeri e inserire la seguente funzione:
=sommarenumeri(Num)
Dove Num è il riferimento della cella dalla quale si vuole vengano estratti e sommati solo i numeri.
Se invece hai solamente bisogno di estrarre i numeri da una cella alfanumerica clicca qui per trovare la soluzione.
Informatics, ski racer, loves travels, Finland, Norway, mountains, squash, photography, Drones and RC Helicopter
Ciao, complimenti per la funzione e per tutto il resto. Un consiglio, ma se avessi bisogno solo di sommare alcuni numeri in una cella alfanumerica?
Ad esempio:
Articolo 45896 contenenti [6] pacchi
Articolo 1254 contenenti [4] pacchi
vorrei che la somma sia solo quelle tra le parentesi quadre, quindi con un totale di 10. E’ possibile?
Grazie
Buongiorno Andrea, avrei bisogno del tuo aiuto per un problema un po’ complesso, almeno per me! ;-p
Provo a spiegarti:
Ho una tabella in cui ci sono, in verticale, alcune date, in orizzontale del materiale (foto, video, audio, ecc.). Ho utilizzato il simbolo “x” per spuntare il materiale non presente in archivio, e il simbolo “spunta (non riesco a inserirlo qui)” per il materiale presente. Può capitare che alcuni materiali siano presenti in quantità multipla (tipo 3 foto, ecc.) e quindi nella cella ci sono 3 segni di spunta.
La mia difficoltà è nel riuscire a contare il numero totale dei segni di spunta e delle “X” presenti in ciascuna colonna! Ho visto che excel (dimenticavo, ho la versione 2010) sostituisce il simbolo “x” con il carattere “û” e quello della spunta con il carattere “ü”.
Ho provato alcune formule fra quelle presenti nel tuo blog ma al massimo sono riuscito a farmi dare quante volte compare la singola “ü” ma non il totale.
Puoi darmi una mano? Se ti servono altre informazioni chiedi pure 😉
@luigi: per fare la somma totale di un determinato carattere presente in un intervallo di celle devi utilizzare il metodo che ho descritto qui: https://www.andreaperotti.ch/2012/12/contare-il-numero-di-specifici-caratteri-nelle-celle-di-excel/
GRAZIE!!!! Non mi funzionava perché non avevo capito che alla fine dovevo premere CTRL+MAIUSCOLO+INVIO 🙂
Buongiorno Andrea,
grazie per la dritta! Purtroppo mi sono trovata in un caso un po’ diverso: ho una cella del tipo ( 1,2 x 3,4) e vorrei estrarre e sommare i due numeri. Con la formula precedente vengono considerati 4 numeri, poichè separati dalle virgole e dunque la somma risulta pari a 1+2+3+4 e dunque non corretta. Come posso procedere in questo caso particolare?
@valeria: se i numeri sono separati dal testo sempre con lo stesso delimitatore, ad esempio lo spazio, puoi usare questo codice che inserisce la funzione SumNums:\n\n
Function SumNums(rngS As Range, Optional strDelim As String = " ") As Double\n Dim vNums As Variant, lngNum As Long\n vNums = Split(rngS, strDelim)\n For lngNum = LBound(vNums) To UBound(vNums) Step 1\n SumNums = SumNums + Val(vNums(lngNum))\n Next lngNum\nEnd Function
\n\nLa funzione SumNums ha due argomenti, il primo è la cella che contiene i numeri, il secondo il delimitatore. Per inserire la funzione devi seguire la stessa procedura descritta in questo post.Buonasera,
volevo chiederle come poter sommare(esclusivamente i numeri) di due celle di questo tipo:
A1 12,5n +
A2 17,5p
Sono riuscito con la sua guida a escludere le lettere ma non riesco a sommare i numeri con la virgola infatti con l’esempio sopracitato la somma sarebbe:
12+5+17+5=39
Attendo un suo gentile riscontro.
mentre se voglio estrarre numeri telefonici dalle pagine bianche? 🙂 e’ possibile?
Buongiorno ho provato a seguire passo passo le istruzioni, copiando e riportando nel modulo il codice. Quando però mi posiziono nella cella e attivo la funzione mi dice che un valore usato nella formula è errato. Cosa devo fare?
Grazie Paolo
@Paolo: come prima cosa verifica che il codice sia scritto nel modo coretto, ovvero che facendo copia/incolla apici, virgolette, trattini non siano formattati in modo errato; se così è riscrivili con la tastiera.
Salve Andrea, come si potrebbe trasformare in secondi totali una stringa di testo es.”1 minuto 10 secondi” che dia il risultato 70? oppure “4 minuti 1 secondo” che dia 241? Uso excel 2010. Grazie e saluti
Buongiorno,ritorno su questo suo intervento.
Se estratti due numeri dovessi moltiplicarli tra loro invece che sommarli? è possibile?
La ringrazio
Nicola
Buonasera. Vorrei fare questa operazione, ho un numero in una cella di excel e vorrei sommare le cifre del numero fino a ridurlo ad un numero da 1 a 9.
esempio 94 sommo 9+4=13 a sua volta il 13 formato da 1 e da 3 li sommo e ottengo 1+3=4
Il risultato da me cercato é il 4 che é un numero della prima decina (1 a 9)
Grazie a chi può aiun’arma.
Saluti
Nat
@Nat, sembra la prova del nove. Io sono autodidatta e mooolto ignorante.
Se le cifre nella cella A1 sono solo 2, crei due formule, in B1 =SOMMA(SINISTRA(A1;1);DESTRA(A1;1)) ed eventualmente la nascondi o la formatti in bianco, e in C1 =SE(SOMMA(SINISTRA(B1;1);DESTRA(B1;1))>B1;B1;SOMMA(SINISTRA(B1;1);DESTRA(B1;1))).
Sicuramente ci sarà un sistema più semplice.
Ciao, Zot
@Andrea Perotti.
Buon giorno, vorrei sapere se esiste un metodo (che non passi per il VBA) che mi permetta di estrarre da una cella, contenente una somma, quanto scritto tra parentesi.
Ad esempio in A1 ho scritto =5+7+(4*3) oppure =6+(7-4) oppure semplicemente =(11)
Vorrei che risultasse, rispettivamente, 12, 3, 11 ed eventualmente usarli per sommarli tra loro.
Il motivo della parentesi è dato da un mio vecchio sistema di “identificazione” della provenienza delle operazioni scritte.
Un grazie anticipato
Zot
Ciao, ho provato ad usare la formula segendo passo passo, ma nada.
Questo il mio problema:
ho file con pagamenti di un corso così sttutturato
nome – cognome – categoria – mese – mese – mese – totale
le colonne mese possono essere vuote (in attesa di pagamento), oppure contenere numeri e lettere oppure solo numeri (in base al metodo di pagamento)
Vorrei poter sommare tutti i pagamenti, considerando soltanto i numeri e non anche il testo.
quindi sommare le celle con – , pos 30, bon 50, 50, 40
Grazie