Concatenare colonne variabili con loop



  • Concatenare colonne variabili con loop?
    di Danilo (utente non iscritto) data: 28/05/2013 14:54:54

    Salve a tutti,
    ho una necessità impellente e spero possiate aiutarmi.
    Sto scrivendo una macro in excel e ad un certo punto mi ritrovo con un foglio di lavoro con righe ed colonne che possono variare a seconda dei dati input con la necessità di concatenare con un separatore le righe fino ad una cella bianca e fare un loop con le n colonne.
    A B C D E F
    1 a b c
    2 a b
    3 a b c d e
    4 a b c d

    risultato
    a,b,c
    a,b
    a,b,c,d,e
    a,b,c,d
    ....



  • di totygno71 data: 28/05/2013 15:25:48

    Ciao Danilo

    mmm a parte le necessità "Impellenti" ^_^ si puo vedere la macro che stai scrivendo?



  • di Danilo (utente non iscritto) data: 28/05/2013 15:27:13

    mmm Devo mettermi a celare un pò di percorsi aziendali ehehe.
    Se ci riesco nascondo e la posto.
    Thx



  • di totygno71 (utente non iscritto) data: 28/05/2013 15:29:32

    Si perchè non sei stato chiarissimo



  • di Danilo (utente non iscritto) data: 28/05/2013 16:28:13

    http://s10.imagestime.com/out.php/i861573_Immagine.png



  • di Vecchio Frac data: 29/05/2013 22:03:45

    Una propostina. Migliorabile :)
     
    Option Explicit
    
    Sub copy_with_commas()
    Dim v As Range, c As Range, s As String, maxcol As Long
    
        For Each v In [A:A]
            s = ""
            If Trim(v) = "" Then Exit For
            For Each c In Range(v.EntireRow.Address)
                If Trim(c) = "" Then Exit For
                s = s & c & ","
            Next
            s = Left(s, Len(s) - 1)
            If maxcol < c.Column Then maxcol = c.Column
            Cells(c.Row, maxcol + 1) = s
        Next
        
    End Sub
    






  • di Vecchio Frac data: 30/05/2013 15:13:42

    Ci ho giocato un po' :)

    Il risultato finisce in colonna H (modificare questo riferimento per non sovrascrivere eventuali celle piene).
     
    Option Explicit
    
    Sub copy_with_commas2()
    
    Dim r As Range, v As Variant
    
        For Each r In [A1].CurrentRegion.Rows
        
            v = Application.Transpose _
                (Application.Transpose _
                (Array _
                (r.Resize(1, WorksheetFunction.CountA(r)))))
            
            Cells(r.Row, "H") = Join(v, ",")
    
        Next
    
    End Sub