Я полагаю, что формула VLOOKUP
будет проще, чем макрос в этом случае. После заполнения формулы вниз по столбцу выполните COPY & PASTE.Values, чтобы удалить формулу.
Отредактировано в примере VLOOKUP: вам нужно будет составить таблицу дат в вашей рабочей книге, идентичную датам в электронной книге. отрегулируйте следующее, чтобы соответствовать вашей ситуации
A1 = значение поиска (дата?) из таблицы, где вы хотите значения в электронной почте
[Example.xlsx] = это название вашей книги по электронной почте
Лист1! = имя электронной таблицы в электронной книге с таблицей данных
$ 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