ripetizione macro colonne



  • ripetizione macro colonne
    di kikkigellu (utente non iscritto) data: 18/01/2016 01:54:47

    Ciao a tutti,
    ho un problema con un report e ci sto sbattendo la testa senza risultati
    nella colonna A ho un elenco di nomi e nelle colonne B, C, D etc un'elenco di date (365 colonne)
    devo selezionare tutto l'insieme, copiare con il trasponi in modo da avere nella prima riga (A1, B1, C1,...) l'elenco dei fornitori e sotto di questi, le date corrispettive.
    1° problema: eliminare le celle vuote per ogni colonna
    2° problema: per saltare il 1° problema pensavo di fare una macro che filtrasse ogni colonna, selezionasse i valori pieni e li copiasse (sempre in colonna) in un nuovo foglio.

    Avendo però circa 200 e passa colonne, volevo sapere come poter rendere automatica la macro di filtro A:A-seleziono valori-copio e incollo valori in A2 su nuovo foglio-tolgo il filtro; filtro B:B-seleziono valori etc etc etc

    A voi una bozza di macro registrata:

    Grazie a tutti in anticipo! :)

     
    Range("A4:NC4").Select
        Range(Selection, Selection.End(xlDown)).Select
        Selection.Copy
        Sheets("Foglio2").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
        Selection.Copy
        Sheets("Foglio3").Select
        Range("A1").Select
        Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=True
        Rows("1:1").Select
        Application.CutCopyMode = False
        Selection.AutoFilter
        ActiveSheet.Range("$A$1:$OI$367").AutoFilter Field:=1, Criteria1:="<>"
        Columns("A:A").Select
        Selection.Copy
        Columns("A:A").Select
        Application.CutCopyMode = False
        Selection.Cut
        ActiveSheet.Range("$A$1:$OI$367").AutoFilter Field:=1, Criteria1:="<>"
        Range("A15:A142").Select
        Application.CutCopyMode = False
        Selection.Copy
        Sheets("Foglio4").Select
        Range("A2").Select
        ActiveSheet.Paste
        Sheets("Foglio3").Select
        ActiveSheet.Range("$A$1:$OI$367").AutoFilter Field:=1
        Range("B:B").Select
        ActiveSheet.Range("$A$1:$OI$367").AutoFilter Field:=2, Criteria1:="<>"
        Range("B16").Select
        Range(Selection, Selection.End(xlDown)).Select
        Selection.Copy
        Sheets("Foglio4").Select
        Range("B2").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Columns("B:B").EntireColumn.AutoFit
        Range("B2").Select
        ActiveSheet.Paste
        Columns("B:B").EntireColumn.AutoFit
    End Sub



  • di Mister_x (utente non iscritto) data: 18/01/2016 10:46:56

    ciao

    una sub() per questo lavoro buttata giu' al momento, si potrebbe migliorare
    traspone da foglio1 in riga a foglio2 in colonna saltando le celle vuote

    allego file

    PS sarebbe sempre utile allegare un file vostro

    ciao
     
    Option Explicit
    Sub trasponiRigaColonna()
    Dim F1 As String, F2 As String
    Dim Vriga As Range
    Dim Vcella As Variant
    Dim i As Long, Nriga As Long
    F1 = "Foglio1"
    F2 = "Foglio2"
    For i = 1 To Sheets(F1).Cells(Rows.Count, 1).End(xlUp).Row
     Set Vriga = Sheets(F1).Range("A" & i & ":OZ" & i)
     Nriga = 1
     For Each Vcella In Vriga
       If Vcella <> "" Then
         Sheets(F2).Cells(Nriga, i) = Vcella
         Nriga = Nriga + 1
       End If
     Next
    Next i
     Set Vriga = Nothing
    End Sub
    
    






  • di kikkigellu (utente non iscritto) data: 19/01/2016 02:08:35

    Ciao Mister_x,

    funziona alla grande! è proprio quello di cui avevo bisogno!

    Grazie mille :)