Trasponi celle a gruppi



  • Trasponi celle a gruppi!!!
    di Aelvira data: 10/12/2010

    Ciao a tutti gli esperti di excel,
    ho un serio problema con la tabella 1 formata dalla colonne a e che devo convertire nella tabella 2(in basso). ovvero devo sistemare le righe di tab.a da verticale a orizzontale ma a gruppi di 3 celle, quindi devo sistemare 3 righe di 1 colonna (tab.1) in 3 colonne su 1 riga di tab.2.
    ho provato con trasponi matrice, ma il mio problema è che le celle devo convertirle in orizzontale ogni 3 righe.

    tabella 1
    a
    ---------
    1 10
    2 20
    3 30
    ---------
    4 40
    5 50
    6 60
    ---------
    7 70
    8 80
    9 90
    ----------


    tabella 2
    b c d
    ----------------
    10 20 30
    40 50 60
    70 80 90


    ho cercato di semlificare al max il mio problema per essere quanto + chiara possibile...
    considerate che la vera tabella 1 è formata da 11000 righe e la tabella 2 da otto colonne.
    lo sto facendo manualmente e sto impazzendo!!!!!
    grazie!!!!




  • di Locate (utente non iscritto) data: 10/12/2010

    Ciao
    ti passo una macro per fare questo lavoro
    sta a te adattarla al tuo fabbisogno, questa parte da a1 e scrive i dati in b,c,d come tu ai detto,l'unico problema e' che non sapendo da dove partono i tuoi dati davrai adattare i tuoi range comunque ti allego il file mio di prova
    ciao da locate
     
    Sub TraspVal()
    
    Dim TR, Rig, Col
    Dim Valore
    Rig = 1
    Col = 2
    
    TR = Cells(Rows.Count, 1).End(xlUp).Row ''conta le righe
      For I = 1 To TR Step 1
       Valore = Cells(I, 1)
       Cells(Rig, Col) = Valore
        If Col = 4 Then
         Col = 1
         Rig = Rig + 1
        End If
       Col = Col + 1
       Next I
    End Sub
    



  • di Locate (utente non iscritto) data: 10/12/2010

    Riciao
    non avevo letto la tua ultima nota riguardo alle colonne,
    --che la vera tabella 1 è formata da 11000 righe e la tabella 2 da otto colonne.
    ----
    per questo alla macro devi dare fare solo una modifica mettere da 4 a 9 come riferimento colonne da scrivere
    ciao da locate
     
    questa riga
    If Col = 4 Then 
    in questa
    If Col = 9 Then ''colonne da utilizzare



  • di Aelvira (utente non iscritto) data: 11/12/2010

    Ciao locate,

    grazie per la macro che mi hai fornito la provo subito sulle mie tabelle!

    saluti



  • di Locate (utente non iscritto) data: 11/12/2010

    Ciao aelvira
    se vai sull'altro forum, dove canapone ieri ti aveva passato gia' delle funzioni, io ho trovato il tuo file e lo gia' elaborato e inserito con la macro che fa questo lavoro senza appesantire il file e la memoria, comunque lo allego anche qui' per coerenza di dati
    ciao da locate
     
    ''macro in questione
    Sub TraspVal()
    
    Dim TR, Rig, Col
    Dim Valore
    Rig = 2
    Col = 3
    
    TR = Cells(Rows.Count, 1).End(xlUp).Row ''conta le righe
      For I = 2 To TR Step 1
       Valore = Cells(I, 1)
       Cells(Rig, Col) = Valore
        If Col = 10 Then ''colonne da utilizzare
         Col = 2
         Rig = Rig + 1
        End If
       Col = Col + 1
       Next I
    End Sub