Создание макроса для копирования данных и вставки в другую книгу

Создание макроса для копирования данных и вставки в другую книгу

У меня есть две рабочие книги. Одна из них отправлена ​​по электронной почте и содержит диаграмму со столбцом, заполненным датами, например, с 01.11.10 по 30.11.10. Для этого дня диаграмма заполнена строкой данных.

Во второй книге есть диаграмма со столбцом, заполненным датами. Мне нужна помощь в создании макроса, который будет искать дату из книги workbook2 и сопоставлять ее с датой из книги workbook1, отправленной по электронной почте, и копировать строку данных из книги workbook1 и вставлять строку в книгу workbook2 в строку с той же датой. Никогда не создавал макросы, поэтому любая помощь будет принята с благодарностью

решение1

Я бы предположил, что VLOOKUPформула была бы проще макроса в этом случае. После заполнения формулы вниз по столбцу выполните COPY & PASTE.Values, чтобы удалить формулу.

Отредактировано в примере VLOOKUP: Вам нужно будет составить таблицу дат в вашей рабочей книге, идентичную датам в отправленной по электронной почте рабочей книге. Измените следующее в соответствии с вашей ситуацией.

A1 = искомое значение (дата?) из таблицы, где вы хотите получить значения в электронном письме
[Example.xlsx] = имя вашей отправленной по электронной почте книги
Sheet1! = имя электронной таблицы в отправленной по электронной почте книге, содержащей таблицу данных
$A$1:$B$30 = полный диапазон данных в отправленной по электронной почте книге
2 = столбец в диапазоне данных, из которого мы хотим получить возвращаемое значение (столбец 2 в A и B)
FALSE = мы хотим получить точное совпадение искомого значения в данных электронного письма

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

Однако, чтобы упростить задачу, если вы не против сохранить одну рабочую книгу в качестве шаблона для получения данных, то следующее будет работать. Просто поместите ее в модуль шаблонной рабочей книги и сохраните. Когда вы получите новое электронное письмо, откройте шаблон, откройте электронную рабочую книгу и затем активируйте макрос из электронной рабочей книги

Предположения в коде:
1: В отправленной по электронной почте книге данные начинаются в ячейке A1
2: В книге макроса/шаблона данные начинаются в ячейке A1
Если любое из этих предположений неверно, скорректируйте начальные значения для объектов L1 и/или Cells (первое значение, L1, — это строка, а второе число — столбец; 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

Связанный контент