У меня есть две рабочие книги. Одна из них отправлена по электронной почте и содержит диаграмму со столбцом, заполненным датами, например, с 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