Usuário com melhor resposta
Procurar Valores entre datas

Pergunta
-
Boa noite pessoal.
É o seguinte eu estou com uma dúvida em uma planilha minha.
A dúvida é o seguinte.
Eu tenho um banco de dados onde são digitados apontamentos de produção, sendo que na coluna "A", é onde são inseridas as DATAS.
Eu queria uma forma de que quando por exemplo, eu digitasse na célula "G1" O valor da data inicial que eu quero fazer a pesquisa, e na célula "H1" o valor final da data.
Sendo assim eu queria que gerasse como se fosse um relatório com as Datas do intervalo digitado nas células "G1" e "H1".
Outro problema é que no meu banco de dados são digitadas várias vezes a mesma data.
Obs.: Pode ser macro também
Desde já muito obrigado pela atenção de todos.
Abraços e boa noite a todossegunda-feira, 14 de março de 2011 23:35
Respostas
-
Sub Pesquisar() Cells.Select Selection.EntireRow.Hidden = False 'Limpa a Planilha Range("B7:I10003").Select Range(Selection, Selection.End(xlDown)).Select Selection.ClearContents For i = 7 To Plan8.Cells(1, 1) If Plan8.Cells(i, 2) = Plan10.Cells(1, 4) Then Plan10.Cells(i, 2) = Plan8.Cells(i, 2) Plan10.Cells(i, 3) = Plan8.Cells(i, 3) Plan10.Cells(i, 4) = Plan8.Cells(i, 4) Plan10.Cells(i, 5) = Plan8.Cells(i, 5) Plan10.Cells(i, 6) = Plan8.Cells(i, 6) Plan10.Cells(i, 7) = Plan8.Cells(i, 7) Plan10.Cells(i, 8) = Plan8.Cells(i, 8) Plan10.Cells(i, 9) = Plan8.Cells(i, 9) Else If Plan8.Cells(i, 2) >= Plan10.Cells(1, 4) And Plan8.Cells(i, 2) <= Plan10.Cells(2, 4) Then Plan10.Cells(i, 2) = Plan8.Cells(i, 2) Plan10.Cells(i, 3) = Plan8.Cells(i, 3) Plan10.Cells(i, 4) = Plan8.Cells(i, 4) Plan10.Cells(i, 5) = Plan8.Cells(i, 5) Plan10.Cells(i, 6) = Plan8.Cells(i, 6) Plan10.Cells(i, 7) = Plan8.Cells(i, 7) Plan10.Cells(i, 8) = Plan8.Cells(i, 8) Plan10.Cells(i, 9) = Plan8.Cells(i, 9) End If End If Next i Range("A8").Select Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlDown)).Select Selection.ClearContents Range("B7").Select Selection.End(xlDown).Select Selection.End(xlDown).Select Selection.Offset(0, -1).Range("A1").Activate ActiveCell.FormulaR1C1 = "x" ActiveCell.Select Selection.Copy Range(Selection, Selection.End(xlUp)).Select ActiveSheet.Paste Application.CutCopyMode = False For A = 7 To Range("A1") If Range("B" & A).Value = "" Then Range("B" & A).Select Selection.EntireRow.Hidden = True Else Range("B" & A).Select Selection.EntireRow.Hidden = False End If Next A End Sub
Pessoal, consegui resolver meu problema com o código acima..Estou postando caso alguém precise.Caio muitissimo obrigado pela atenção.A todos um forte abraço e um ótimo dia- Marcado como Resposta Allvinho quarta-feira, 16 de março de 2011 14:01
quarta-feira, 16 de março de 2011 14:00
Todas as Respostas
-
Você já tentou escrever algum código? Poste aqui.
Felipe Costa Gualberto - http://www.ambienteoffice.com.brterça-feira, 15 de março de 2011 11:34 -
Existem varias formas de fazermos isso:
uma é utilizando as funções de banco de dados do excel BDCONTAR, BDSOMAR, ...
outra formar, com as famosas SOMASES, CONTSES,...
ou entao podemos trazer essas informações ja formatadas do banco de dados, ai utilizariamos as funções T-SQL:
SUM(), AVG(),COUNT(),... junto com a clausula BETWEEN
tente detalhar um pouco mais o seu cenrio para podermos ajudá-lo
Caio Vitulloterça-feira, 15 de março de 2011 12:42 -
Eu tentei assim.
Sub Filtro()
For i = 1 to 10000
If Cells(i,4) = Cells(i,2) then
cells(i,8)=cells(i,3)
end if
next i
Só que não da nada.. como eu disse acima.. tipo.. se eu uso o procv, ele me retorna somente uma um valor quando se tem várias datas..
E eu não queria usar o auto filtro..
Muito obrigado pela atenção
terça-feira, 15 de março de 2011 12:51 -
Alvinho, da uma olhada:
http://office.microsoft.com/pt-br/excel-help/bdsoma-HP005209069.aspx
http://alvarocaldas.wordpress.com/2008/10/05/bdsoma-e-dois-ou-mais-criterios-correlatos/
existem outras funções Similares.
Da uma olhada tambem em Filtro Avançado:
http://www.juliobattisti.com.br/excel120avancado/modulo1/licao15.htm
http://dicasdeexcel.com.br/site/2009/01/filtro-avancado-no-excel-2003-e-2007/
Caio Vitulloterça-feira, 15 de março de 2011 13:28 -
Caio muito obrigado pela atenção, mais na realidade eu não queria somar..
Iamgine a seguinte situação:
A B C D 1 Data Descrição Valor Status 2 18/fev Exemplo 1 R$ 15,00 Ok 3 18/fev Exemplo 2 R$ 20,00 Ok 4 18/fev Exemplo 3 R$ 35,00 Falta 5 19/fev Exemplo 1 R$ 48,00 Falta 6 19/fev Exemplo 2 R$ 46,00 Ok 7 20/fev Exemplo 3 R$ 12,00 Ok 8 21/fev Exemplo 2 R$ 32,00 Falta 9 23/fev Exemplo 2 R$ 15,00 Falta 10 24/fev Exemplo 1 R$ 84,00 Ok 11 24/fev Exemplo 2 R$ 12,00 Ok Isso tudo em Plan1.
Agora imagine em Plan2, na célula A1 eu digitaria uma data inicial, exemplo.: 18/fev
E na célula A2 eu digitaria uma data final, exemplo.: 23/fev.
Ai eu gostaria que ele buscasse esse intervalo de células do meu banco de Dados (Plan1) e me retornasse na Plan2.
O Problema é que como eu tenho repetições de datas.. se eu uso a função PROCV.. por exemplo para buscar dados do dia 18, ele me retorna somente a primeira linha, e eu gostaria que me retornasse tudo referente ao intervalo.
De qualquer forma muito Obrigado pela atenção.Abraço e órimo dia
terça-feira, 15 de março de 2011 13:51 -
Da uma olhada nas opções que lhe mandei de filtro avançado.
bom, de qualquer forma, criei um codigo para voce:
Sub filtrar() 'Limpa a sheet2 Sheets("Plan2").Cells.Clear 'Coluna da Data inicio Dim colunaData1 As Integer colunaData1 = 1 'Coluna Data Fim Dim colunaData2 As Integer colunaData2 = 2 'Verifica a ultima celula da plan1 Dim finalRow As Integer finalRow = Sheets("Plan1").Cells(Rows.Count, 1).End(xlUp).Row 'Ultima Coluna Dim finalColumn As Integer finalColumn = Sheets("Plan1").Cells(4, Columns.Count).End(xlToLeft).Column 'Ultima Linha Sh2 Dim finalRow2 As Integer For n = 1 To finalRow If CDate(Cells(n, colunaData1)) >= CDate(Sheets("Plan1").Range("g1")) And CDate(Cells(n, colunaData2)) <= CDate(Sheets("Plan1").Range("g1")) Then finalRow2 = Sheets("Plan2").Cells(Rows.Count, 1).End(xlUp).Row 'Copia For k = 1 To finalColumn Sheets("Plan2").Cells(n, k) = Sheets("Plan1").Cells(n, k) Next End If Next Sheets("Plan2").Select End Sub
Caio Vitulloterça-feira, 15 de março de 2011 14:49 -
Caio boa noite meu amigo..
Acho que faltou um pouco de experiência de minha parte, mais não estou conseguindo fazer a macro rodar..
Teria como eu te mandar a planilha por e-mail.??
Abraço, e desculpa pelo encomodo..
Sds
quarta-feira, 16 de março de 2011 00:49 -
Sem problemas,
coloque a planilha em algum site de compartilhamento de arquivos e me manda a url para eu baixar.
Caio Vitulloquarta-feira, 16 de março de 2011 00:59 -
Caio.. vamos ver se deu certo..
http://www.4shared.com/file/JautzHro/Horas_Extras_Beneficiamento.html
Se quiser me add no msn.. eu te explico melhor..
alvinho077@hotmail.com
Abraço.
quarta-feira, 16 de março de 2011 01:35 -
Ok, recebi, mas ela esta travada com senha.
manda uma destravada por favor.
Caio Vitulloquarta-feira, 16 de março de 2011 01:44 -
http://www.4shared.com/file/8y0aE7SV/Horas_Extras_Beneficiamento.html
Ta ai o link.. desprotegi a planilha e o VBA, qualquer coisa a senha é ben2011
Abraço
quarta-feira, 16 de março de 2011 02:11 -
Sub Pesquisar() Cells.Select Selection.EntireRow.Hidden = False 'Limpa a Planilha Range("B7:I10003").Select Range(Selection, Selection.End(xlDown)).Select Selection.ClearContents For i = 7 To Plan8.Cells(1, 1) If Plan8.Cells(i, 2) = Plan10.Cells(1, 4) Then Plan10.Cells(i, 2) = Plan8.Cells(i, 2) Plan10.Cells(i, 3) = Plan8.Cells(i, 3) Plan10.Cells(i, 4) = Plan8.Cells(i, 4) Plan10.Cells(i, 5) = Plan8.Cells(i, 5) Plan10.Cells(i, 6) = Plan8.Cells(i, 6) Plan10.Cells(i, 7) = Plan8.Cells(i, 7) Plan10.Cells(i, 8) = Plan8.Cells(i, 8) Plan10.Cells(i, 9) = Plan8.Cells(i, 9) Else If Plan8.Cells(i, 2) >= Plan10.Cells(1, 4) And Plan8.Cells(i, 2) <= Plan10.Cells(2, 4) Then Plan10.Cells(i, 2) = Plan8.Cells(i, 2) Plan10.Cells(i, 3) = Plan8.Cells(i, 3) Plan10.Cells(i, 4) = Plan8.Cells(i, 4) Plan10.Cells(i, 5) = Plan8.Cells(i, 5) Plan10.Cells(i, 6) = Plan8.Cells(i, 6) Plan10.Cells(i, 7) = Plan8.Cells(i, 7) Plan10.Cells(i, 8) = Plan8.Cells(i, 8) Plan10.Cells(i, 9) = Plan8.Cells(i, 9) End If End If Next i Range("A8").Select Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlDown)).Select Selection.ClearContents Range("B7").Select Selection.End(xlDown).Select Selection.End(xlDown).Select Selection.Offset(0, -1).Range("A1").Activate ActiveCell.FormulaR1C1 = "x" ActiveCell.Select Selection.Copy Range(Selection, Selection.End(xlUp)).Select ActiveSheet.Paste Application.CutCopyMode = False For A = 7 To Range("A1") If Range("B" & A).Value = "" Then Range("B" & A).Select Selection.EntireRow.Hidden = True Else Range("B" & A).Select Selection.EntireRow.Hidden = False End If Next A End Sub
Pessoal, consegui resolver meu problema com o código acima..Estou postando caso alguém precise.Caio muitissimo obrigado pela atenção.A todos um forte abraço e um ótimo dia- Marcado como Resposta Allvinho quarta-feira, 16 de março de 2011 14:01
quarta-feira, 16 de março de 2011 14:00