Confronto valore cella



  • 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

    ciao

    da inserire in un modulo di classe

    utilizzo
    =EstraiNum(A1)

    STHT0-77403 blu 3253560774035 rosso 3253560774035
    STHT0-77403 blu 3253560774035 ro 3253560774035
    T0-774 03 blu 3253560774035 ros 3253560774035
    STHT0-77403 blu 3253560774035 rossonero 3253560774035

    ciao
     
    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