Copie os dados com data entre duas datas definidas para uma nova planilha usando o VBA

Anonim

Neste artigo, criaremos uma macro para extrair dados da planilha de dados brutos para uma nova planilha, com base no intervalo de datas especificado.

Os dados brutos consistem em três colunas. A primeira coluna contém datas, a segunda coluna contém nomes de agentes e a terceira coluna contém números de vendas feitas por um agente naquela data específica.

Antes de executar a macro, duas entradas são necessárias de um usuário. O usuário deve definir a data de início e término. Com base nas datas especificadas, a macro extrairá os dados entre o intervalo de datas definido para uma nova planilha.

Após especificar as datas de início e término, o usuário deve clicar no botão “Enviar” para executar a macro.

Ao executar a macro, ele classificará os dados na planilha “RawData”, com base na coluna de data e extrairá os dados com base no intervalo de datas especificado para a planilha recém-inserida.

Explicação lógica

A macro recebe entrada para as datas de início e término das células J8 e J9, respectivamente. Esta macro primeiro classifica os dados na planilha “RawData”, com base na coluna A em ordem crescente. Classificamos os dados de acordo com os valores de data, para que possamos copiar os dados em um único intervalo, após aplicar o filtro para o intervalo definido.

Depois de classificar os dados, aplique o filtro sobre eles. O filtro aplicado é baseado em duas condições, a primeira condição é que o valor na coluna A deve ser maior ou igual à data de início e a segunda condição é que o valor na coluna A deve ser menor ou igual à data final.

Depois de aplicar o filtro, a nova planilha é inserida e os dados filtrados são copiados e colados nela.

Explicação do código

Range ("A1"). CurrentRegion.Sort key1: = Range ("A1"), order1: = xlAscending, Header: = xlYes

O código acima é usado para classificar os dados no intervalo definido. Key1 especifica a coluna com base na qual os dados serão classificados. A ordem de classificação é fornecida por order1. Já definimos a ordem crescente. Para definir a ordem decrescente, pode-se usar a constante xlDescending. Cabeçalho é usado para especificar se o intervalo de dados contém o cabeçalho.

Range ("A1"). CurrentRegion.AutoFilter Field: = 1, Criteria1: = "> =" & StartDate, Operator: = xlAnd, Criteria2: = "<=" & EndDate

O código acima é usado para aplicar o filtro no intervalo de dados. Field1 especifica o número da coluna na qual o filtro será aplicado. Criteria1 e Criteria2 definem as condições com base nas quais os dados serão filtrados. Operador especifica o operador, que será usado entre duas condições.

Worksheets.Add after: = Worksheets (Worksheets.Count)

O código acima é usado para inserir a nova planilha após a última planilha na pasta de trabalho.

Pode-se entender facilmente os códigos, pois coloquei comentários junto com os códigos na macro.

Siga abaixo para o código

 Sub CopyDataBasedOnDate () 'Desativando atualizações de tela Application.ScreenUpdating = False' Declarando duas variáveis ​​do tipo de dados Date Dim StartDate, EndDate As Date 'Declarando variável para objeto de planilha Dim MainWorksheet As Worksheet' Inicializando as variáveis ​​de Data com data de início da célula J8 'e data de término da célula J9 da planilha "Macro" StartDate = Sheets ("Macro"). Range ("J8"). Value EndDate = Sheets ("Macro"). Range ("J9"). Value 'Inicializando objeto de planilha com " RawData "worksheet Set MainWorksheet = Worksheets (" RawData ") 'Ativando o objeto de planilha MainWorksheet.Activate' Classificando os dados por data na coluna A em ordem crescente Range (" A1 "). CurrentRegion.Sort _ key1: = Range (" A1 "), order1: = xlAscending, _ Header: = xlYes 'Filtra os dados com base no intervalo de datas entre a data de início e o intervalo de datas de término (" A1 "). CurrentRegion.AutoFilter Field: = 1, Criteria1: = _"> = " & StartDate, Operator: = xlAnd, Criteria2: = "<=" & EndDate 'Copiar os dados do filtro ActiveSheet.AutoFilter.Range.Copy' Inserting new wor ksheet após a última planilha na pasta de trabalho Worksheets.Add after: = Worksheets (Worksheets.Count) 'Colando os dados copiados ActiveSheet.Paste' Ajustando automaticamente o tamanho das colunas selecionadas Selection.Columns.AutoFit Range ("A1"). Selecione ' Ativando a planilha "RawData" MainWorksheet.Activate 'Removendo o filtro da planilha que aplicamos anteriormente Selection.AutoFilter Sheets ("Macro"). Ativar End Sub 

Se você gostou deste blog, compartilhe com seus amigos no Facebook. Além disso, você pode nos seguir no Twitter e no Facebook.

Gostaríamos muito de ouvir de você, diga-nos como podemos melhorar nosso trabalho e torná-lo melhor para você. Escreva para nós no site de e-mail