none
Filtro para tabela via código VBA RRS feed

  • Pergunta

  • Reverências. Muito Obrigado.

    Preciso criar um filtro de uma tabela em Excel na coluna "Mês/Ano" (de janeiro/1988 a dezembro/2010), com base em datas de períodos diferentes que sempre se alteram.

    Por exemplo:

    Primeiro período: 01/04/2000 a 30/09/2000

    Segundo período: 01/04/2007 a 30/10/2007

    Com bases nesses período criei uma macro utilizando o gravador de macro e obtive o seguinte código:

    Sub Filtro()
    
    
    
    '
    
    
    
    ' Filtro Macro
    
    
    
    '
    
    
    
    
    
    
    
    '
    
    
    
     ActiveSheet.ListObjects("Tabela1").Range.AutoFilter Field:=1, Operator:= _
    
    
    
     xlFilterValues, Criteria2:=Array(1, "4/1/2007", 1, "5/1/2007", 1, "6/1/2007", 1, _
    
    
    
     "7/1/2007", 1, "8/1/2007", 1, "9/1/2007", 1, "10/1/2007", 1, "4/1/2000", 1, "5/1/2000", 1, _
    
    
    
     "6/1/2000", 1, "7/1/2000", 1, "8/1/2000", 1, "9/1/2000")
    
    
    
    End Sub
    
    
    
    

    Entretanto, como as datas sempre se alteram, tenho que criar o filtro manualmente.

    Preciso criar um código que automatize a filtragem, lendo as datas em algum campo e criando o filtro.

    Por favor. Se alguém puder ajudar eu agradeço.

    MUITO OBRIGADO!

    domingo, 1 de agosto de 2010 12:24

Respostas

  • Você pode alterar as datas por variaveis que buscam valores em células
    por exemplo:

     

    Primeiro período: 01/04/2000 a 30/09/2000

    Segundo período: 01/04/2007 a 30/10/2007

    Com bases nesses período criei uma macro utilizando o gravador de macro e obtive o seguinte código:

    Sub Filtro()
    dim data1 as date
    dim data2 as date
    'indicando que as variaveis são valores contidos nas células (a1 e a2), da planilha 1
    data1 = Worksheets(1).Cells(1, 1)
    data2 = Worksheets(1).Cells(1, 2)

    '
    ' Filtro Macro
    'preste a atenção nos 2 primeiros critérios, ao invés de datas são células la da planilha, que podem ser alteradas pelo usuário
    '
    ActiveSheet.ListObjects("Tabela1").Range.AutoFilter Field:=1, Operator:= _
    xlFilterValues, Criteria2:=Array(1, data1, 1, data2, 1, "6/1/2007", 1, _
    "7/1/2007", 1, "8/1/2007", 1, "9/1/2007", 1, "10/1/2007", 1, "4/1/2000", 1, "5/1/2000", 1, _
    "6/1/2000", 1, "7/1/2000", 1, "8/1/2000", 1, "9/1/2000")

    End Sub



    quinta-feira, 5 de agosto de 2010 14:48