Notifications
Clear all

MACRO FILTRAR DADOS POR INTERVALO DATA

5 Posts
1 Usuários
0 Reactions
1,949 Visualizações
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Olá pessoal, preciso da ajuda de vocês, a minha necessidade e uma macro para filtrar os dados conforme data de inicio e data final.

segue o anexo para o melhor entendimento.

silva_jmp

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 22/09/2012 2:34 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 


Clicar com o botão direito sobre o nome da guia.

Exibir código...

Colar o código abaixo.

Não se esquecer de salvar como xlsm.

Private Sub Worksheet_Change(ByVal Target As Range)

Dim d1 As Long
Dim d2 As Long

d1 = Range("C2")
d2 = Range("D2")
f = Range("C1048576").End(xlUp).Row

If Target.Address = Range("C2").Address Or Target.Address = Range("D2").Address Then
If d2 < d1 Then
MsgBox ("Data Final não pode ser menor que Data Início")
Else
ActiveSheet.Range("$C$5:$G$" & f).AutoFilter Field:=1
ActiveSheet.Range("$C$5:$G$" & f).AutoFilter Field:=1, Criteria1:=">=" & d1, Operator:=xlAnd, Criteria2:="<=" & d2
End If
End If

End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 22/09/2012 3:04 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Edson obrigado por atender, e isso mesmo, mas de que forma visualizo todos os dados depois, pois após pesquisar dos períodos, fica os dados da ultima pesquisa, como sugestão se apagarmos das datas para aparecer todos os dados?!

silva_jmp

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 22/09/2012 3:20 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 


Tem razão! Segue sugestão, ao apagar alguma das datas.

Private Sub Worksheet_Change(ByVal Target As Range)

Dim d1 As Long
Dim d2 As Long

d1 = Range("C2")
d2 = Range("D2")
f = Range("C1048576").End(xlUp).Row

If Range("C2") = "" Or Range("D2") = "" Then
ActiveSheet.Range("$C$5:$G$" & f).AutoFilter Field:=1
ElseIf Target.Address = Range("C2").Address Or Target.Address = Range("D2").Address Then
If d2 < d1 Then
MsgBox ("Data Final não pode ser menor que Data Início")
Else
ActiveSheet.Range("$C$5:$G$" & f).AutoFilter Field:=1
ActiveSheet.Range("$C$5:$G$" & f).AutoFilter Field:=1, Criteria1:=">=" & d1, Operator:=xlAnd, Criteria2:="<=" & d2
End If
End If

End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 22/09/2012 6:19 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Valeu Edson pela ajuda. :lol:

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 22/09/2012 9:13 pm