Cerca e copia scomposto



  • Cerca e copia scomposto
    di Ivan (utente non iscritto) data: 19/09/2015 14:26:32

    Ciao, avrei bisogno di cercare in un foglio excel una stringa alfanumerica tipo RT56/9 e scomporta in colonne sulla stessa riga in questo modo in una colonna solo lettere RT in un'altra solo il numero 56 ed in un'altra il numero dopo /
    Grazie
    Ciao Ivan



  • di alfrimpa data: 19/09/2015 14:39:00

    Ciao Ivan

    Due domande:

    1) le stringhe da scompattare sono molte?
    2) le stringhe sono strutturalmente uguali (due lettere, due numeri, uno slash ed una cifra) o possono essere diverse?

    Allega un file di esempio in cui mostri tutte le casistiche che hai.

    È importante sapere come sono scritte le stringhe.

    Alfredo





  • di Ivan (utente non iscritto) data: 19/09/2015 17:03:40

    Le stringhe da scompattare sono sulla stessa colonna, sono circa 2000 righe.
    Le stringhe sono strutturate in descrizione + codice + descrizione:

    descrizione + S630/6 + descrizione
    descrizione + RT56/11 + descrizione
    descrizione + RID120/3 + descrizione

    Devo scompattare solo il codice ex. S630/6 in una colonna S in un'altra 630 in un'altra 6,
    l'unico denominatore comune è / tutto quello che c'è prima e dopo il codice non devo scompattarlo.
    Il codice è formato prima dello / da 1 a 3 caratteri max di testo ex. RID seguito da un numero che va da 2 a 4 caratteri e dopo lo / è solo numerico che va da 1 o 2 cifre.

    Spero di essere stato chiaro.

    Grazie

    Ciao Ivan





  • di cromagno data: 19/09/2015 18:00:19

    Ciao a tutti,
    @Ivan
    non sarebbe più semplice se postassi un piccolo file con una decina di questi "codici" da scompattare, in modo da poter applicare la formula direttamente su dati attendibili?



  • di alfrimpa data: 19/09/2015 18:06:32

    Sei stato chiarissimo.

    Il separatore tra descrizione e codice è lo spazio o +?
    La descrizione può avere uno o più spazi?

    Ora sono fuori e non ho il pc ma quando rientro cerco di fare qualche prova.

    Ovviamente chiunque altro volesse intervenire è il benvenuto

    Alfredo





  • di alfrimpa data: 19/09/2015 18:08:12

    Si, allegare un file è la cosa migliore.

    Alfredo





  • di Ivan data: 19/09/2015 21:18:57

    Ciao ho allegato un file excel tipo,
    nella colonna B c'e' una descrizione sempre diversa con il tipo di codice da scomporre ex RT57/7,
    siccome negli anni è stato compilato malissimo e da piu persone , volevo scomporre il tutto per fare ordine, a me interessa scomporre il codice in tre parti:
    la parte iniziale che sono sempre delle lettere (da 1 a 3 lettere ex. RT), la seconda parte è un numero (da 1 a 3 cifre ex. 57 ) poi la parte finale che è sempre dopo lo / ed è sempre un numero (da 1 a 2 cifre ex. 7).

    Grazie

    Ciao
    Ivan




  • di cromagno data: 19/09/2015 22:47:24

    Ma nell'esempio che hai allegato non hai fatto quello che hai appena descritto...
    La terza parte non è "sempre un numero (da 1 a 2 cifre ex. 7)", ma hai estratto "DX".
    Inoltre, nell'ultimo elemento dell'esempio ci sarebbero due codici da estrapolare:

    Linea composta da S630/5 e RT40/13 SX rete

    ....il che cambia tutto.



  • di isy data: 19/09/2015 22:49:05

    Ciao

    Ho inserto un ciclo in vba, verifica i risultati
    Vedi allegato


     
    Option Explicit
    
    Sub ABC()
       Dim Arr(), Rng, St
       Dim J As Long, K As Long, Num
       Dim Txt As String
       Rng = Range("B4", Cells(Rows.Count, "B").End(xlUp))
       ReDim Arr(1 To UBound(Rng), 1 To 3)
       For J = 1 To UBound(Rng)
         St = Split(Rng(J, 1))
         For K = 0 To UBound(St)
             If St(K) Like "*[0-9]*" Then
                Txt = Split(Replace(St(K), "/", " "))(0)
                Num = GetDigits(Txt & "")
                Arr(J, 1) = Left(Txt, Len(Txt) - Len(Num))
                Arr(J, 2) = Num
                Arr(J, 3) = St(K + 1)
                Exit For
              End If
         Next
       Next
       Range("C4").Resize(UBound(Arr), 3) = Arr
    End Sub
    
    Function GetDigits(AllNum As String) As Variant
      Dim X As Long
      For X = 1 To Len(AllNum)
        If Mid(AllNum, X, 1) Like "#" Then GetDigits = GetDigits & Mid(AllNum, X, 1)
      Next
    End Function
    



  • di Ivan data: 19/09/2015 23:52:40

    Ottima, volevo chiederti se al posto del testo finale è possibile scomporre il numero,
    nell'ultima celle scomposte in posizione colonna E compare il testo, vorrei comparisse il numero,
    per intenderci nella casella E4 il numero 6, nella casella E5 il numero 10, mi servirebbe il numero dopo /.
    Comunque ottimo Lavoro.

    Grazie



  • di isy data: 20/09/2015 00:03:58

    Ciao Ivan

    Una piccola modifica
    Sostituisci il codice:
     
    Option Explicit
    
    Sub ABC()
       Dim Arr(), Rng, St
       Dim J As Long, K As Long, Num
       Dim Txt As String
       Rng = Range("B4", Cells(Rows.Count, "B").End(xlUp))
       ReDim Arr(1 To UBound(Rng), 1 To 4)
       For J = 1 To UBound(Rng)
         St = Split(Rng(J, 1))
         For K = 0 To UBound(St)
             If St(K) Like "*[0-9]*" Then
                Txt = Split(Replace(St(K), "/", " "))(0)
                Num = GetDigits(Txt & "")
                Arr(J, 1) = Left(Txt, Len(Txt) - Len(Num))
                Arr(J, 2) = Num
                Arr(J, 3) = Split(St(K), "/")(1)
                Arr(J, 4) = St(K + 1)
                Exit For
              End If
         Next
       Next
       Range("C4").Resize(UBound(Arr), 4) = Arr
    End Sub
    
    Function GetDigits(AllNum As String) As Variant
      Dim X As Long
      For X = 1 To Len(AllNum)
        If Mid(AllNum, X, 1) Like "#" Then GetDigits = GetDigits & Mid(AllNum, X, 1)
      Next
    End Function



  • di Ivan data: 20/09/2015 00:04:48

    Va bene cosi con l'aggiunta della colonna numero dopo /.

    Grazie ancora.




  • di Ivan data: 20/09/2015 00:23:58

    Perfetta, sei un Mago!

    Grazie Mille