Crear una macro para copiar datos y pegarlos en otro libro de trabajo

Crear una macro para copiar datos y pegarlos en otro libro de trabajo

Tengo dos libros de trabajo. Uno se envía por correo electrónico y tiene un gráfico con una columna con las fechas, es decir, del 01/11/10 al 30/11/10. Para ese día, el gráfico se completa con una fila de datos.

El segundo libro también tiene un gráfico con una columna llena de fechas. Lo que necesito ayuda es crear una macro que mire la fecha del libro2 y haga coincidir esa fecha con el libro1, enviada por correo electrónico, copie la fila de datos del libro1 y pegue la fila en el libro2 en la fila que tiene la misma fecha. . Nunca creé una macro, por lo que cualquier ayuda sería muy apreciada.

Respuesta1

Me imagino que VLOOKUPen este caso una fórmula sería más fácil que una macro. Después de completar la fórmula en la columna, haga COPIAR Y PEGAR. Valores para eliminar la fórmula.

Editado en el ejemplo BUSCARV: Deberá crear una tabla de las fechas de su libro de trabajo idéntica a las fechas del libro de trabajo enviado por correo electrónico. ajuste lo siguiente para adaptarlo a su situación

A1 = es el valor de búsqueda (¿fecha?) de la tabla donde desea los valores en el correo electrónico
[Ejemplo.xlsx] = es el nombre de su libro de trabajo
Hoja1 enviado por correo electrónico. = el nombre de la hoja de cálculo en el libro enviado por correo electrónico que tiene la tabla de datos
$A$1:$B$30 = el rango completo de datos en el libro enviado por correo electrónico
2 = la columna en el rango de datos que queremos obtener valor de (columna 2 en A y B)
FALSO = queremos una coincidencia exacta del valor de búsqueda en los datos del correo electrónico

=VLOOKUP(A1,[Example.xlsx]Sheet1!$A$1:$B$30,2,FALSE)

Sin embargo, para que sea sencillo, si no desea mantener un libro de trabajo como plantilla para recibir los datos, lo siguiente funcionará. Simplemente colóquelo en un módulo del libro de plantilla y guárdelo. Cuando reciba un nuevo correo electrónico, abra la plantilla, abra el libro de correo electrónico y luego active la macro desde el libro de correo electrónico.

Supuestos en el código:
1: En el libro enviado por correo electrónico, los datos comienzan en la celda A1
2: En el libro de macro/plantilla, los datos comienzan en la celda A1
Si cualquiera de estos supuestos es incorrecto, ajuste los valores iniciales para L1 y/o las celdas objetos (el primer valor, L1, es la fila y el segundo número es la columna; A = 1)

Sub CopyData()
    Dim All As New Collection
    Dim One As Variant, L1 As Integer, L2 As Integer
    Dim TW As Workbook, EW As Workbook

    Set TW = ThisWorkbook
    Set EW = ActiveWorkbook

    L1 = 15
    Do Until Cells(L1, 2).Value = ""
        ReDim One(0 To 1)
        One(0) = Cells(L1, 2).Value
        One(1) = Cells(L1, 3).Value
        All.Add One
        Erase One
        L1 = L1 + 1
    Loop

    TW.Activate
    L1 = 15
    Do Until Cells(L1, 2).Value = ""
        For L2 = 1 To All.Count
            One = All(L2)
            If One(0) = Cells(L1, 2).Value Then
                Cells(L1, 3).Value = One(1)
                Erase One
                Exit For
            Else
                Erase One
            End If
        Next L2
        L1 = L1 + 1
    Loop
End Sub

información relacionada