Eu imagino que uma fórmula VLOOKUP
seria mais fácil do que uma macro nessa instância. Depois de preencher a fórmula na coluna, faça um COPY & PASTE.Valores para remover a fórmula.
Editado no exemplo do VLOOKUP: Você precisará fazer uma tabela com as datas em sua pasta de trabalho idênticas às datas na pasta de trabalho enviada por e-mail. ajuste o seguinte para ajustar sua situação
A1 = é o valor de pesquisa (date?) da tabela onde você deseja os valores no email
[Example.xlsx] = é o nome da sua pasta de trabalho enviada por e-mail
Folha1! = o nome da planilha na pasta de trabalho enviada por email que possui a tabela de dados
$ A $ 1: $ B $ 30 = o intervalo completo dos dados na pasta de trabalho enviada por e-mail
2 = a coluna no intervalo de dados do qual queremos obter o valor de retorno (coluna 2 em A e B)
FALSE = queremos uma correspondência exata do valor de pesquisa nos dados de e-mail
=VLOOKUP(A1,[Example.xlsx]Sheet1!$A$1:$B$30,2,FALSE)
No entanto, para simplificar, se você não estiver acima de manter uma pasta de trabalho como um modelo para receber os dados, o seguinte funcionará. Basta colocá-lo em um módulo da pasta de trabalho de modelo e salvá-lo. Quando você receber um novo e-mail, abra o modelo, abra a pasta de trabalho de e-mail e, em seguida, ative a macro na pasta de trabalho de e-mail
Suposições no código:
1: Na pasta de trabalho enviada por email, os dados são iniciados na célula A1
2: na pasta de trabalho macro / modelo, os dados são iniciados na célula A1
Se qualquer uma dessas suposições estiver incorreta, ajuste os valores iniciais para L1 e / ou os objetos Células (o primeiro valor, L1, é a linha e o segundo número é a coluna; 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