Concatena celle



  • Concatena celle
    di alexps81 data: 27/07/2015 09:00:24

    Buongiorno a tutti, per il mio lavoro sto realizzando un elenco telefonico e con pezzi di codice presi qua e la sto cercando di completare il tutto.

    Mi servirebbe sapere da qualcuno cose è possibile concatenare un insieme di celle.
    Mi spiego meglio:

    Ho in una colonna circa 600 e-mail e vorrei che attraverso un pulsante tutte queste e-mail venissero concatenate tra loro con il ";" e lo spazio che li separa, copiate e tenute in memoria. Da tenere conto che può essere che tra una cella e l'altra può non essere presente un e-mail

    Esempio pratico:

    pippo.p@email.it
    paperino.p@email.it
    paperone..p@email.it
    'vuoto'
    paperina.p@email.it
    'vuoto'
    gastone.gp@email.it

    Risultato:

    pippo.p@email.it; paperino.p@email.it; paperone..p@email.it; paperina.p@email.it; gastone.gp@email.it

    Grazie



  • di Lucas87 data: 27/07/2015 11:02:47

    Ciao
    Senza conoscere la struttura del foglio provo a buttare li una soluzione da collegare al pulsante:
     
    For each cel in "tuo intervallo"
        if cel<>"" then
                str=str & cel
        end if
    Next
    "cella di destinazione"=str



  • di Vecchio Frac data: 27/07/2015 12:05:21

    Sì, anch'io farei così, con una piccola correzione:

    str=str & cel & ";"





  • di Lucas87 data: 27/07/2015 12:21:15

    Mi sono dimenticato il ;



  • di alexps81 data: 27/07/2015 12:25:19

    Grazie mille, funziona tutto.

    Volevo sapere se esiste un modo per far capire al momento del COPY che all'ultima e-mail deve togliere la ","

    Grazie
     
    Private Sub CommandButton3_Click()
    Dim Str As String
    For Each cel In Range("H3:H600")
        If cel <> "" Then
               Str = Str & cel & "," & " "
        End If
    Next
    Range("I4") = Str
    Range("I4").Copy
    End Sub



  • di alfrimpa data: 27/07/2015 14:12:33

    Ciao Alex

    Prova a sostituire:

    Alfredo
     
    Range("I4") = Str
    
    con
    
    Range("c4") = Left(Str, Len(Str) - 2)






  • di Vecchio Frac data: 27/07/2015 14:13:31

    Ce n'ho una più carina :)
    (e toglie anche l'ultimo punto e virgola)
     
    option explicit
    
    private sub commandbutton3_Click()
    dim s as string
        'range di origine a1:a100 chiaramente da modificare!
        s = replace(join(application.transpose(activesheet.range("a1:a100")),";"), ";;","")
        s = left(s, len(s)-1)
        range("i4") =s
    end sub