Notifications
Clear all

FILTRO AVANÇADO ENTRE DATAS

8 Posts
4 Usuários
0 Reactions
2,162 Visualizações
(@isidro2016)
Posts: 0
New Member
Topic starter
 

Bom dia,

Irmãos,

Estou quebrando a cabeça com uma dúvida simples, preciso criar uma macro com um filtro avançado com critérios entre datas, já dei uma olhada no forum, encontrei esse (viewtopic.php?f=10&t=10874). mais não consegui.

Planilha em anexo, está asim:
PEDIDO DATA CLIENTE END
15 09/08/2017 NOME1 RUA1
16 10/08/2017 NOME2 RUA2
17 11/08/2017 NOME3 RUA3
18 12/08/2017 NOME4 RUA4
19 13/08/2017 NOME5 RUA5

Critérios:

PEDIDO DATA CLIENTE END
>09/08/2017
<11/08/2017

Resultado deveria ser esse:
PEDIDO DATA CLIENTE END
15 09/08/2017 NOME1 RUA1
16 10/08/2017 NOME2 RUA2
17 11/08/2017 NOME3 RUA3

Poderiam me ajudar.

Paz e Bem

 
Postado : 16/08/2017 8:57 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

ISIDRO2016,

Boa tarde!

Se o critério, no exemplo que você enviou é > que 09/08/2017 e < do que 11/08/2017, então o resultado esperado não pode ser o que você exemplificou. O resultado seria apenas o pedido número 16 do dia 10/08/2017.

Você não precisa de macro para isso. Pode fazer com o próprio filtro do Excel. Veja no exemplo anexo.

 
Postado : 16/08/2017 9:39 am
(@isidro2016)
Posts: 0
New Member
Topic starter
 

Irmão,

Já agradeço pela atenção,
Eu preciso da macro, porque essa será uma planilha de ponte para outra e que terá que trocar posições de colunas para encaixar em outra aba.

Att.
NIlson

 
Postado : 16/08/2017 10:12 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

ISIDRO2016,

Ok. Segue com Macro.

 
Postado : 16/08/2017 11:33 am
(@isidro2016)
Posts: 0
New Member
Topic starter
 

Boa tarde,
Wagner,

Eu testei, só que o critério que coloquei abaixo não filtrou, dê uma olhada no anexo que apresentou o erro.
CRITÉRIO DO FILTRO
> 10/08/2017
< 13/08/2017

teria que aparecer:
PEDIDO DATA CLIENTE END
17 11/08/2017 NOME3 RUA3
18 12/08/2017 NOME4 RUA4

só que apareceu assim, vazio:
PEDIDO DATA CLIENTE END

Paz e Bem.

 
Postado : 17/08/2017 11:04 am
(@osvaldomp)
Posts: 857
Prominent Member
 
Sub FiltrarV2()
 Range("$A$1:$D$" & Cells(Cells.Rows.Count, 1).End(3).Row).AutoFilter Field:=2, Criteria1:= _
 ">" & Format([G2], "mm/dd/yyyy"), Operator:=xlAnd, Criteria2:="<" & Format([G3], "mm/dd/yyyy")
End Sub
 
Postado : 17/08/2017 12:03 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Apesar da rotina postada pelo Osvaldo funcionar corretamente, só para entendimento, na rotina apresentada pelo Wagner, para que funcione corrretamente, temos de tirar a definição de DATE das Variáveis DataIn e DataFim

ficando

Dim DataIn
    Dim DataFim

Como temos a conversão usando o CDate as mesmas entram em conflito, não gerando erro, mas sim não convertendo a data "13/08/2017" para o formato indicado "mm/dd/yyyy" devido o último mes ser 12, e eliminando a definição DATE temos a filtragem correta, então para a rotina funcionar com datas acima do dia 12 a mesma tem de ficar conforme abaixo :

Sub Filtrar()
    
    Dim UltimaLinha As Long
    Dim DataIn
    Dim DataFim
    
    DataIn = CDate(Range("G2").Value)
    DataFim = CDate(Range("G3").Value)
    
    UltimaLinha = Sheets("Plan1").Cells(Cells.Rows.Count, 1).End(xlUp).Row
    If UltimaLinha < 5 Then UltimaLinha = 5
    
    
    DataIn = Format(Range("G2"), "mm/dd/yyyy")
    DataFim = Format(Range("G3"), "mm/dd/yyyy")
    
    ActiveSheet.Range("$A$1:$D$" & UltimaLinha).AutoFilter Field:=2, Criteria1:= _
    ">" & DataIn, Operator:=xlAnd, Criteria2:="<" & DataFim

End Sub

Trabalhar com Datas no excel é um saco, rsrsrs

[]s

 
Postado : 17/08/2017 12:30 pm
(@isidro2016)
Posts: 0
New Member
Topic starter
 

Boa tarde,

funcionou perfeitamente, e já agradeço mais uma vez.

Mauro, Que Deus te abençoe e a todos do site.

Paz e Bem.

 
Postado : 18/08/2017 1:52 pm