Scomporre una stringa



  • Scomporre una stringa
    di Davide (utente non iscritto) data: 12/06/2013 14:36:34

    Scusatemi se vi faccio domande che magari possono sembrare di facile risoluzione

    come faccio a scomporre una stringa di testo estrendone i numeri in due differenti celle?

    esempio:

    345FI+5 g

    vorrei che fosse scomposto in due celle adiacenti contenenti in una 345 e nell'altra 5.

    secondo voi è possibile?




  • di Davide (utente non iscritto) data: 12/06/2013 16:24:43

    ho allegato un file di esempio con quello che vorrei riuscire a fare. Nelle note la spiegazione dell'output della colonna.

    sotto ai campi in rosso ho compilato manualmente come esempio.

    io non ci riesco proprio...

    potrei diventare anche matto...



  • di Mister_x (utente non iscritto) data: 12/06/2013 16:35:13

    ciao

    la prima cosa che mie' passata nella mente, in base al tuo esempio, questa Sub() da mettere nel foglio
    adesso con un doppio click in cella A , PS funziona solo da A1:A10 per piu' celle basta aumentare il Range()

    345FI+5 g 345 5
    3450Gh+10mm 3450 10
    13453Pippo+123 g 13453 123
    13453TT+123 g 13453 123
    345FI+5 g 345 5

    ciao da Mister_x
     
    Private Sub worksheet_beforedoubleclick(ByVal target As Range, cancel As Boolean)
    If Intersect(target, Range("A1:A10")) Is Nothing Then Exit Sub
        Cells(target.Row, "B") = Val(target)
        Cells(target.Row, "C") = Val(Mid(target, Application.Find("+", target, 1) + 1, 10))
    End Sub
    






  • di Davide (utente non iscritto) data: 12/06/2013 16:44:54

    Se guardi il file che ho postato è un pochino più complessa la faccenda... sto veramente impazzendo!






  • di Mister_x (utente non iscritto) data: 12/06/2013 16:47:07

    Riciao

    ho scaricato il tuo file e ho visto che il tuo primo post come richiesta non centra proprio nulla anzi niente al file che hai postato in quanto dando cosi una sguardo mi sembra che il problema e' molto diverso che scomporre una stringa, ma riportare determinati valori in altre celle con un criterio che attualmente a vista mi sfugge

    Vediamo se riesci a dare piu' spiegazioni a riguardo per tutti quelli che ti vogliono aiutare in questa impresa
    ciao da Mister_x





  • di Davide (utente non iscritto) data: 12/06/2013 17:00:56

    La stringa che mi esce in colonna D rappresenta un legame di un diagramma di gantt che importo da project e che devo trasformare per importare su SAP.

    la stringa può essere di tre tipi:

    un numero. In questo caso ho necessità di avere 3 output (in colonna E il numero stesso, in colonna F il tipo di legame e se ho un numero in colonna D è sempre FI, ed in G i giorni di scostamento in questo caso 0)

    un numero e 2 lettere. gli outpu dovranno essere così (in E il numero, in F le due lettere a destra del numero, in G sempre 0)

    Un numero con due lettere, un segno matematico (+ o -) un numero e la lettera g. In questo caso l'output che dovrà uscie è (in E il numero, in F le due lettere adiacenti al numero, e in G il numero prima della g con il suo segno)

    ovviamente nell'esempio che ho postato ho inserito poche righe. Nella realta posso avere casi come

    123II+21 g

    spero di essere stato un pochino più chiaro...



  • di Vecchio Frac data: 12/06/2013 18:59:50

    @mister_x
    Cells(target.Row, "C") = Val(Mid(target, Application.Find("+", target, 1) + 1, 10))
    perchè non usi Split? è più comodo.

    p.s. non ho guardato il file allegato nè ho preso visione del problema... mi è solo saltato all'occhio questo fatto.





  • di Davide (utente non iscritto) data: 13/06/2013 12:04:42

    Nessuno che mi dia una mano?!?!?




  • di HarryBosch data: 14/06/2013 01:50:11

    Se le regole sono sempre come le 3 che hai descritto, allora puoi utilizzare l'algoritmo che trovi nel file "scomposizione" che allego.

    Qualsiasi variazione potrebbe comportare un esito non atteso o un errore nella routine; quindi le 3 composizioni accettate dovranno rientrare in questi parametri:
    - un numero
    - un numero con delle lettere successive
    - un numero con delle lettere, un segno + o -, un altro numero con una successiva lettera



  • di Davide (utente non iscritto) data: 17/06/2013 12:13:23

    GRAZIE!!!!