Criando uma macro para copiar dados e colar em outra pasta de trabalho

Criando uma macro para copiar dados e colar em outra pasta de trabalho

Eu tenho duas pastas de trabalho. Um é enviado por e-mail e possui um gráfico com uma coluna preenchida com as datas, ou seja, 01/11/10 a 30/11/10. Para esse dia, o gráfico é preenchido com uma linha de dados.

A segunda pasta de trabalho também possui um gráfico com uma coluna preenchida com datas. Preciso de ajuda para criar uma macro que analise a data da pasta de trabalho2 e corresponda a essa data com a pasta de trabalho1, enviada por e-mail, e copie a linha de dados da pasta de trabalho1 e cole a linha na pasta de trabalho2 na linha que tem a mesma data . Nunca criei uma macro, então qualquer ajuda seria muito apreciada

Responder1

Eu imagino que uma VLOOKUPfórmula seria mais fácil do que uma macro neste caso. Depois de preencher a fórmula na coluna, faça COPY & PASTE.Values ​​para remover a fórmula.

Editado no exemplo VLOOKUP: Você precisará criar uma tabela de datas em sua pasta de trabalho idêntica às datas da pasta de trabalho enviada por e-mail. ajuste o seguinte para se adequar à sua situação

A1 = é o valor de pesquisa (data?) Da tabela onde você deseja os valores no e-mail
[Example.xlsx] = é o nome da sua pasta de trabalho enviada por e-mail,
Planilha1! = o nome da planilha na pasta de trabalho enviada por e-mail que contém a tabela de dados
$A$1:$B$30 = o intervalo completo de dados na pasta de trabalho enviada por e-mail
2 = a coluna no intervalo de dados que queremos obter o retorno valor de (coluna 2 em A e B)
FALSE = queremos uma correspondência exata do valor de pesquisa nos dados do e-mail

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

No entanto, para simplificar, se você não quiser manter uma pasta de trabalho como modelo para receber os dados, o seguinte funcionará. Basta colocá-lo em um módulo da pasta de trabalho modelo e salvá-lo. Ao receber um novo e-mail, abra o modelo, abra a pasta de trabalho de e-mail e ative a macro na pasta de trabalho de e-mail

Suposições no código:
1: Na pasta de trabalho enviada por e-mail, os dados começam na célula A1
2: Na pasta de trabalho de macro/modelo, os dados começam na célula A1
Se alguma dessas suposições estiver incorreta, ajuste os valores iniciais para L1 e/ou as Células objetos (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

informação relacionada