Cómo puedo mediante un Macro extraer desde una tabla de excel registros y colocarlo en una sola celda?

Tengo una tablas de clientes que tiene varios correos de contactos, la idea es almacenar en una celda todos los correos de contactos relacionado a cada cliente:

Ejemplo:

No. Client Nombre del Cliente Contacto Correo_Contacto
12565 Super Bodega Jose Perez [email protected]
12565 Super Bodega Luis Gonzalez [email protected]
1825 MC Barber Shop Carlos Lope [email protected]
1825 MC Barber Shop Manuel jerez [email protected]
12565 Super Bodega Pedro Gutierre [email protected]

El resultado que quiero estw

Cliente NombreCliente CorreosContacto
12565 Super Bodega [email protected],[email protected],[email protected] 
1825 MC Barber Shop [email protected],[email protected] 

2 respuestas

Respuesta
1

¿Pero los quieres en la misma hoja o en otra hoja?

¿En qué columnas está cada dato?

No. Client|                        |Nombre del Cliente|                       |Contacto |            Correo_Contacto
12565                       Super Bodega                                     Jose Perez J                [email protected]
12565                       Super Bodega                                      Luis Gonzalez             [email protected] 

la idea es tener por cada numero de cliente todos los correos de contacto relacionados.

Entendí el problema desde un inicio, pero necesito que me digas en qué columna está la información, por ejemplo, el no. cliente, ¿está en la columna A? El nombre en la columna B, etc

Suponiendo que los datos están en la hoja1 y empiezan en la columna A, te voy a poner el resultado en la hoja2.

Te anexo la macro

Sub contactos()
'Por.Dante Amor
    Set h1 = Sheets("Hoja1")
    Set h2 = Sheets("Hoja2")
    h2.Cells.ClearContents
    h1.Rows(1).Copy h2.Rows(1)
    For i = 2 To h1.Range("A" & Rows.Count).End(xlUp).Row
        Set b = h2.Columns("A").Find(h1.Cells(i, "A"), lookat:=xlWhole)
        If Not b Is Nothing Then
            h2.Cells(b.Row, "C") = h2.Cells(b.Row, "C") & "; " & h1.Cells(i, "C")
        Else
            h1.Rows(i).Copy h2.Rows(h2.Range("A" & Rows.Count).End(xlUp).Row + 1)
        End If
    Next
    MsgBox "Fin"
End Sub

.

.

Respuesta
1

Esta macro es un ejemplo de lo quieres solo adáptala a tus encesidades

Sub unir_celdas()
Dim datos As Range, resultado As Range
Dim matriz() As Variant, matriz2() As Variant
Dim f As Integer, c As Integer, i As Integer, j As Integer
Set datos = Range("b2").CurrentRegion
With datos
    f = .Rows.Count: c = .Columns.Count
    Set resultado = .Columns(c + 2).Resize(f, 1)
    matriz2 = resultado
    ReDim matriz(c)
    For i = 2 To f
        For j = 1 To c
            matriz(j) = .Cells(i, j)
        Next j
    matriz2(i, 1) = Join(matriz(), " ")
    Next i
    With resultado
        Range(.Address) = matriz2
        .EntireColumn.AutoFit
    End With
End With
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas