Sviluppare funzionalita su Microsoft Office con VBA Concatenare valori su una stessa colonna

Login Registrati
Stai vedendo 17 articoli - dal 1 a 17 (di 17 totali)
  • Autore
    Articoli
  • #8765 Risposta

    BRUNA SERRA

      Buongiorno a tutt, ho una colonna A con N indirizzi mail e vorrei concatenarli per un un invio multiplo:

      a@pippo.it

      c@pippo.it

      c@pippo.it

      per avere

      a@pippo.it; c@pippo.it; c@pippo.it

       

      sapete dirmi come? grazie!!!

      #8770 Risposta

      vecchio frac
      Moderatore
        23 pts

        Di primo acchito mi viene da dirti che in Excel (lato formule) hai almeno due strade:

        1) la funzione =CONCATENA()

        2) l'operatore & (e commerciale)

        Esempio 1 :

        =CONCATENA(A1;";"B1;";"C1;";";D1)

        Esempio 2:

        =A1&";"&B1&";"&C1&";"&D1)

        #8776 Risposta
        alfrimpa
        alfrimpa
        Partecipante
          2 pts

          @Vecchio Frac

          In casi come questo preferisco usare il VBA scrivendo una UDF e certamente non hai bisogno che ti dica come fare.

          Il CONCATENA() lo puoi usare se sono pochi elementi ma se fossero decine o centinaia hai voglia a scrivere il CONCATENA().

          Un caro saluto.

          Alfredo

          #8784 Risposta

          vecchio frac
          Moderatore
            23 pts

            Ciao Magico Alfri, basta una sola istruzione in effetti.

            join(application.transpose(range("A1").CurrentRegion),";")

            #8788 Risposta

            vion
            Partecipante
              3 pts

              con formula puoi mettere in B2 

              =SE(RIF.RIGA(A2)=2;A2&";"&A1;A2&";"&B1)

              e trascini giù! 

              Ammetto di aver concatenato anche io indirizzi email per invio di "newsletter".. quando ero giovane   

              Ps. ogni client / provider email ha un num max di destinatari che puoi inserire per ogni invio.

               

              #8792 Risposta

              Mister_x

                ciao

                altra soluzione

                in B1 = A1

                in B2 = =B1&";"&A2

                trascini fino all'occorrenza di quanti ne supporta la mail come indirizzi

                ciao

                 

                #8845 Risposta
                Oscar
                Oscar
                Partecipante
                  1 pt

                  Una semplice macro no   vedi esempio file allegato se ti può andare bene

                  Allegati:
                  You must be logged in to view attached files.
                  #8850 Risposta
                  Luca73
                  Luca73
                  Partecipante
                    4 pts

                    Ciao

                    Una sempolice udf (anche se qulla suggerita da VF è più bella e compatta anche se ha problemi se vi sono celle vuote)

                    Function ConcatAll(RangeW As Range, InterC As String) As String
                    Dim CellaW
                    ConcatAll = ""
                    For Each CellaW In RangeW
                        If Not (CellaW = "") Then
                            ConcatAll = ConcatAll & CellaW.Text & InterC
                        End If
                    Next CellaW
                    ConcatAll = Left(ConcatAll, Len(ConcatAll) - Len(InterC))
                    
                    End Function
                    Function ConcatAllVF(RangeW As Range, InterC As String) As String
                    If RangeW.Columns.Count = 1 Then
                        ConcatAllVF = Join(Application.Transpose(RangeW), InterC)
                    ElseIf RangeW.Rows.Count = 1 Then
                        ConcatAllVF = Join(Application.Transpose(RangeW), InterC)
                    Else
                        ConcatAllVF = "ERRORE"
                    End If
                    End Function
                    

                     

                     

                    #8856 Risposta
                    Oscar
                    Oscar
                    Partecipante
                      1 pt

                      Ciao Luca ho Excel 2010 non riesco mica a farla funzionare potresti gentilmente allegare il file che dopo lo salvo in xlsb

                      #8906 Risposta
                      Luca73
                      Luca73

                        Ciao ora non posso. Lunedì spero di ricordarmi. Io metto le function in un modulo standard (non nel foglio stesso) e poi la richiamo come una normale funzione digitando e il nome e inserendo i parametri.

                         

                        #8916 Risposta
                        Oscar
                        Oscar
                        Partecipante
                          1 pt

                          Io con Excel 2010 ho fatto questa e funziona benissimo , ma io non sono bravo come tà

                          Function ConcatenaW(I)
                          For I = 1 To WorksheetFunction.CountA(Range("A:A"))
                          If I < 2 Then
                          ConcatenaW = ConcatenaW & Cells(I, 1)
                          Else
                          ConcatenaW = ConcatenaW & ";" & Cells(I, 1)
                          End If
                          Next
                          End Function
                          #8937 Risposta

                          Mister_x
                          Partecipante

                            ciao

                            tanto per partecipare con una UDF da inserire in un modulo standard

                            [code]

                            Function Unisci(ByVal celle As Range, ByVal Separatore As String) As String
                            Dim cella As Variant
                            Dim stringa As String
                            Dim sec As Long
                            sec = 0
                            For Each cella In celle
                            If cella <> "" And InStr(1, cella, "@", 0) > 0 Then
                            If sec = 0 Then
                            stringa = stringa & cella
                            sec = 1
                            Else
                            stringa = stringa & Separatore & cella
                            End If
                            End If
                            Next
                            Unisci = stringa
                            End Function

                            [/code]

                            utilizzo su qualsiasi range , esclude quelli che non sono indirizzi Mail

                            =Unisci( il tuo range dichiarato ; il separatore da utilizzare)

                            =unisci(A1:B10;"; ")

                            ciao 

                             

                            #8944 Risposta
                            Oscar
                            Oscar
                            Partecipante
                              1 pt

                              Ciao Mister_x  non capisco il problema ma con Excel 2010 nemmeno la tua mi funziona

                              #9069 Risposta
                              Luca73
                              Luca73
                              Partecipante
                                4 pts

                                Ciao

                                In allegato il file Excel con tutte le funzioni proposte

                                @ Oscar: Perchè fai definire I come parametro della function quando poi lo ricalcoli all'interno della stessa?

                                @ Mister_x mi sono permesso di creare una seconda macro apportando una modifica alla tua. Ho usato una variabile booleana anzichè un numero per identificare la prima ricorrenza.

                                @ Oscar e Mister_x avendo identificato la prima ricorrenza secondo me si possono modificare le seguenti istruzioni (considerando che in tale condizione, primo elemento, stringa e ConcatenaW saranno vuote.)

                                ConcatenaW = ConcatenaW & Cells(I, 1)
                                stringa = stringa & cella

                                 Come

                                ConcatenaW = Cells(I, 1)
                                stringa = cella

                                Ciao a tutti.

                                Luca

                                 

                                Allegati:
                                You must be logged in to view attached files.
                                #9093 Risposta
                                Oscar
                                Oscar
                                Partecipante
                                  1 pt

                                  Ciao Luca adesso tutto mi è più chiaro e tutto mi funziona grazie per il consiglio del parametro infatti non capivo il perché terrò consiglio per le prossime ciao

                                  #9107 Risposta
                                  alfrimpa
                                  alfrimpa
                                  Partecipante
                                    2 pts

                                    Dispiace constatare che colei che ha aperto la discussione sia “sparita”

                                    Ce la cantiamo e suoniamo da soli.

                                    Forse l’avremo spaventata?  

                                    Alfredo

                                    #9114 Risposta

                                    vecchio frac
                                    Moderatore
                                      23 pts

                                      alfrimpa ha scritto:

                                      l’avremo spaventata?

                                      Può darsi. In ogni caso anche se ce la cantiamo da soli viene fuori una bella banda 😉

                                    Login Registrati
                                    Stai vedendo 17 articoli - dal 1 a 17 (di 17 totali)
                                    Rispondi a: Concatenare valori su una stessa colonna
                                    Gli allegati sono permessi solo ad utenti REGISTRATI
                                    Le tue informazioni:



                                    vecchio frac - 830 risposte

                                    albatros54
                                    albatros54 - 516 risposte

                                    Marius44
                                    Marius44 - 282 risposte

                                    patel
                                    patel - 264 risposte

                                    Luca73
                                    Luca73 - 235 risposte