|
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. | NEI PREFERITI | .:: | RSS Forum | RSS News | NEWS web | NEWS software | |
| PUBBLICITA' | | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | | CERCA nel FORUM » | |
15-03-2009, 18.11.20 | #1 |
Newbie
Registrato: 14-02-2009
Messaggi: 7
|
[Excel VBA] Estrarre numeri da stringa alfanumerica
Come posso fare per estrarre dei numeri (si tratta più precisamente di un importo) da una stringa alfanumerica di una cella Excel? Il dato contenuto nella cella è groosomodo del tipo "xxxxxx prezzo EUR nnn,nn yyyy.." vorrei che nella cella accanto comparisse solo il valore nnn,nn ... le varie xxx e yyy... non sono mai costanti ne come lunghezza ne come caratteri. Ho provato con stringa.estrai ma non sono riuscito a trovare la modalità giusta. Non so se è fattibile tramite formula oppure necessito di una routina VBA... Qualcuno ha già affrontato questo problema..? grazie! |
15-03-2009, 18.41.29 | #2 |
Newbie
Registrato: 14-02-2009
Messaggi: 7
|
Ho fatto un passo avanti (ricerca su Google..)
con questa macro: Function estrai_cifre(s As Range) As Long Dim T As String Dim C As String Dim i As Integer Application.Volatile True T = s.Value C = "" For i = 1 To Len(T) If Mid(T, i, 1) <= "9" And Mid(T, i, 1) >= "0" Then C = C + Mid(T, i, 1) End If Next i estrai_cifre = Val(C) End Function estraggo i numeri di una stringa ... ma solo quelli ... volgio dire il numero xxx,xx non lo estraggo.. come posso fare per includere anche la virgola??? |
16-03-2009, 03.31.23 | #3 |
Newbie
Registrato: 19-01-2009
Messaggi: 16
|
Ciao silvershadow70
prova la macro così modificata: Function estrai_cifre(s As Range) As Double Dim T As String Dim C As String Dim i As Integer Dim IsNumero As Boolean Application.Volatile True T = s.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 estrai_cifre = CDbl(C) End Function oppure, SOLO se la cifra è sempre preceduta dalla stringa "EUR " questa funzione: =STRINGA.ESTRAI(B10;TROVA("EUR";B10;1)+4;TROVA(" ";B10;TROVA("EUR";B10;1)+4)-(TROVA("EUR";B10;1)+4)) ciao pietrol |
17-03-2009, 00.18.05 | #4 |
Newbie
Registrato: 14-02-2009
Messaggi: 7
|
ok grazie!!
al momento sto utilizzando solo la seconda che è in effetti di utilizzo immediato, dato che i valori sono sempre preceduti da EUR, tuttavia c'è un caso in cui non funziona al 100%. Praticamente alcune volte capita che nella stringa c'è scritto "... EUR XXX,XX,.." in sostanza con la forula STRINGA:ESTRAI viene estratta anche la seconda virgola e quindi il risultato finale sarà per esempio 300,15, ... C'è qualche modo per perfezionare la formula? grazie in anticipo |
17-03-2009, 01.11.11 | #5 |
Newbie
Registrato: 19-01-2009
Messaggi: 16
|
Ciao silvershadow70
prova così e fammi sapere. =SOSTITUISCI(SOSTITUISCI(STRINGA.ESTRAI(B10;TROVA( "EUR";B10;1)+4;TROVA(" ";B10;TROVA("EUR";B10;1)+4)-(TROVA("EUR";B10;1)+4))&"ç";",ç";"");"ç";"") ciao pietrol |
25-03-2009, 11.44.31 | #6 |
Newbie
Registrato: 14-02-2009
Messaggi: 7
|
ciao,
rieccomi ... questa volta restituisce errore .. (VALORE...) sto facendo alcuni confronti con l'altra ma nn riesco ancora a trovare l'errore... |
25-03-2009, 11.47.09 | #7 |
Newbie
Registrato: 14-02-2009
Messaggi: 7
|
arieccomi ... oops !!!
avevo fatto un errore io ......... sembra che funzioni .. ti facio sapere grazie! |
Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti) | |
|
|
Discussioni simili | ||||
Discussione | Autore discussione | Forum | Risposte | Ultimo messaggio |
[Excel 2003] solo numeri sugli assi | crazy.cat | Office suite | 3 | 12-03-2008 12.03.44 |
Comparazione e ripetizione di numeri | comtrex | Programmazione | 1 | 21-07-2006 23.11.03 |
[Excel VBA] Testo a capo in una List Box | Gabry | Office suite | 3 | 16-01-2006 16.24.33 |
[Excel] Generare numeri con precise caratteristiche | Lionsquid | Office suite | 9 | 07-05-2005 19.54.11 |
Inserire due diversi numeri di pagine in word | LUCAB | Office suite | 3 | 14-03-2005 16.53.58 |