Forum di Excel e VBA, per condividere esperienze e risolvere problemi su: Excel, Word, Access, Power Point, Microsoft Office, macro, Visual Basic e Visual Studio.
Confronto valore cella di Alessio (utente non iscritto) data: 07/03/2015 14:24:53
Salve a tutti, avrei bisogno di un consiglio sulla creazione di una macro, premetto che uso il VBA da parecchi anni, ma solo tramite la pratica funzione "reggistra macro" e scopiazzando codici sul web.
Vi spiego il mio problema: ho una cella contenente alcuni dati, ad esempio "STHT0-77403 blu 3253560774035 rosso", dalla quale dovrei estrarre solo "3253560774035".
Il problema è che il contenuto delle celle varia e l'unica variabile fissa del risultato è che sono 13 cifre numeriche non separate da spazi.
Avevo pensato ad una routine che iniziasse a cancellare da destra in carattere per volta, fin quando i 13 caratteri a destra siano 13 cifre numeriche, ma non sono in grado di scriverla...avete qualche consiglio o qualche soluzione migliore??
Grazie
di Mister_x (utente non iscritto) data: 07/03/2015 17:07:15
Option Explicit
Public Function EstraiNum(ByVal Stringa As String) As Variant
Application.Volatile
Dim valstr As Variant
valstr = Mid(Stringa, 1, InStrRev(Stringa, " "))
EstraiNum = Mid(valstr, Len(valstr) - 13, 13)
End Function
di Alessio (utente non iscritto) data: 14/03/2015 12:10:18
Ciao e grazie della risposta, però c'è qualcosa che non funziona:
ho creato il modulo di classe e inserito il codiche che hai scritto ma come risultato esce #VALORE!
inserendo il codice in un modulo normale i risultato sono questi:
Valore cella risultato formula risultato da me cercato
4350730 4006825593044 #VALORE! 4006825593044
49797090 4009317970903 rosso 4009317970903 4009317970903
3900000193 #VALORE! non presente (era un'eccezione alla quale non avevo pensato :D)
4430618 blu 4006825603279 #VALORE! 4006825603279
di Alessio (utente non iscritto) data: 14/03/2015 12:23:07
Ho capito cosa succede, la formula funziona solo se il codice che cerco ha dei valori sia a destra che a sinistra, ma se a destra non c'è scritto nulla, quindi è l'ultimo valore della cella, la formula va in errore
come si può correggere??
di asdrubale87 data: 16/03/2015 12:27:29
Ciao, sono sempre alessio, ma reggistrandomi ho usato il mio vecchio nick usato per i forum :D
Ripensando bene alla mia esigenza ho trovato una routine che potrebbe funzionare, ma non sapendo come scriverla in VBA ne ho disegnato un diagramma di flusso, come facevo ai tempi delle scuole :D
spero che quest'idea non sia troppo difficile da trascrivere in codice