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

1

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

A segunda pasta de trabalho também tem um gráfico com uma coluna preenchida com as datas. O que eu preciso de ajuda é criar uma macro que olhará a data do workbook2 e combinará essa data com o workbook1, enviada por email, e copie a linha de dados da pasta de trabalho1 e cole a linha na pasta de trabalho2 na linha que possui a mesma data. Nunca criei uma macro, então qualquer ajuda seria muito apreciada

    
por edmon 01.11.2010 / 21:01

1 resposta

0

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
    
por 01.11.2010 / 21:30