ricostruzione tabella



  • ricostruzione tabella
    di sara (utente non iscritto) data: 02/10/2014 20:09:05

    Ciao a tutti, ho un problema! Ho un file excel con diverse società e per ognuna di queste ho delle variabili dal 2005 al 2009. Le società sono in riga e su ogni colonna ho le variabili e sottocolonne per ciascun anno. Avrei bisogno di traslare questi dati cioe in colonna dovrei avere solo le variabili e gli anni li dovrei avere in riga. Fors enon mi sono spiegata bene, allego quindi file!

    grazie!
    sara



  • di lepat (utente non iscritto) data: 02/10/2014 21:15:06

    prova questa macro che traspone la tabella nel foglio2
     
    Sub a()
    Set sh1 = Sheets(1)
    Set sh2 = Sheets(2)
    With sh1
      LR = .Cells(.Rows.Count, "A").End(xlUp).Row
      drow = 4
      For r = 4 To LR
        sh2.Range("A" & drow & ":A" & drow + 8).Value = .Range("A" & r).Value
        sh2.Range("B" & drow & ":B" & drow + 8).Value = Application.WorksheetFunction.Transpose(.Range("C3:K3"))
        sh2.Range("C" & drow & ":C" & drow + 8).Value = Application.WorksheetFunction.Transpose(.Range("C" & r & ":K" & r))
        sh2.Range("D" & drow & ":D" & drow + 8).Value = Application.WorksheetFunction.Transpose(.Range("L" & r & ":S" & r))
        drow = drow + 9
      Next
      End With
    End Sub



  • di carlosartori data: 07/10/2014 15:56:05

    prova questa macro, ma devi cambiare un paio di cose nel file:
    i nomi delle aziende vanno nella colonna "B" a partire dalla cella 4 e non nella A dalla cella 5 come nel file esempio
    tutte le variabili devono avere lo stesso numero di anni

     
    Sub Macro1()
    
        'elenco anni
        'se sono sempre gli stessi
        anni = Range("C3:K3")
        'se cambiano, ma rimangono sempre sulla riga 3 e sempre sotto "svalutazione crediti" e sempre "DTA" subtio dopo
        i = 3
        Do While Cells(2, i) <> "DTA"
            i = i + 1
            trovato = i - 1
        Loop
        anni = Range(Cells(3, 3), Cells(3, trovato))
        'immagino che la struttura sia sempre la stessa quindi se ci sarà una terza caratteristica sarà dopo DTA con gli stessi anni (non come nel file d'esempio)
        i = 4 'prima azienda in riga 4, non 5 come nell'esempio
        r = 16 'prima riga tabella di arrivo
        c = 1 'prima colonna tabella di arrivo
        Do While Cells(i, 2) <> "" ' aziende in colonna B non A come nell'esempio la prima cella vuota fa terminare il ciclo
            For k = 1 To UBound(anni, 2) 'ciclo sugli anni
                Cells(r, c) = Cells(i, 2) 'nome dell'azienda
                c = c + 1
                Cells(r, c) = anni(1, k) 'anno
                c = c + 1
                j = 3
                Do While Cells(2, j) <> "" ' non so quante variabili esistono, ciclo fino alla prima cella vuota
                    Cells(r, c) = Cells(i, j + k - 1) 'dato
                    c = c + 1
                    j = j + UBound(anni, 2)
                Loop
                r = r + 1
                c = 1
            Next
            i = i + 1
        Loop
    End Sub