Notifications
Clear all

MACRO DE FILTRO AVANÇADO SÓ FILTRA NÚMEROS INTEIROS

10 Posts
2 Usuários
0 Reactions
1,138 Visualizações
(@jhonathad)
Posts: 6
Active Member
Topic starter
 

Bom dia,
Estou com uma macro de filtro avançado.
Ela Filtra a Planilha 1, chamada "Etapa1", no intervalo que eu determinar na Planilha 4 chamada "Console"
Porém quando insiro intervalor com décimais por ex: Entre 10,2 e 15,8 ela some com todos os dados e fica branco a planilha Etapa 1.
Já quando eu filtro por exemplo : Entre 10 e 20 que são número inteiros funciona normalamente.
O que pode ser, segue abaixo o código:

Sub Filtro_Clique()
Dim TempoInicial As String, TempoFinal As String
Dim lastRow As Integer
lastRow = Cells(Cells.Rows.Count, "A").End(xlUp).Row
TempoInicial = VBA.Format(Sheets("Console").Range("b1").Value, "")
TempoFinal = VBA.Format(Sheets("Console").Range("b3").Value, "")
If TempoInicial <> "" And TempoFinal <> "" Then
    ActiveSheet.Range("$A$1:$G$5000").Select
    Selection.AutoFilter Field:=1, Criteria1:=">=" & TempoInicial, Operator:=xlAnd, _
                                   Criteria2:="<=" & TempoFinal
ElseIf TempoInicial <> "" And TempoFinal = "" Then
    ActiveSheet.Range("$A$1:$G$5000" & lastRow).Select
    Selection.AutoFilter Field:=1, Criteria1:=">=" & TempoInicial
ElseIf TempoInicial = "" And TempoFinal <> "" Then
    ActiveSheet.Range("$A$1:$G$5000" & lastRow).Select
    Selection.AutoFilter Field:=1, Criteria1:="<=" & TempoFinal
Else
        ActiveSheet.Range("$A$1:$G$5000").AutoFilter Field:=1
End If
End Sub
 
Postado : 06/06/2016 6:59 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

jhonatha, olhando a rotina não é para ter problemas, o ideal seria ter anexado seu modelo para uma analise melhor.

Mas antes disto, verifique se estes numeros decimais não estão com o "Formato - TEXTO", se não for isto só olhando o modelo.

[]s

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

 
Postado : 06/06/2016 8:01 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Em adicional, corrija a sua definição de tempos; como está "TempoInicial = VBA.Format(Sheets("Console").Range("b1").Value, "")" os tempos serão sempre vazio ("").

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

 
Postado : 07/06/2016 7:58 am
(@jhonathad)
Posts: 6
Active Member
Topic starter
 

Em adicional, corrija a sua definição de tempos; como está "TempoInicial = VBA.Format(Sheets("Console").Range("b1").Value, "")" os tempos serão sempre vazio ("").

Como corrijo? Pode me auxiliar?

 
Postado : 07/06/2016 8:23 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

sem saber o que "vem" de Sheets("Console").Range("b1") fica dificil.

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

 
Postado : 07/06/2016 8:52 am
(@jhonathad)
Posts: 6
Active Member
Topic starter
 

sem saber o que "vem" de Sheets("Console").Range("b1") fica dificil.

Tem que filtrar tempo, segundos, tipo tenho 1000 dados em ordem de 1,0 - 1,1 - 1,2 - 1,3 1, 4 .............. 50s por exemplo.
Tenhoq ue filtrar o intervalo. É isso?

 
Postado : 07/06/2016 10:39 am
(@jhonathad)
Posts: 6
Active Member
Topic starter
 

sem saber o que "vem" de Sheets("Console").Range("b1") fica dificil.

Estou encaminhando um modelo.

 
Postado : 07/06/2016 10:43 am
(@jhonathad)
Posts: 6
Active Member
Topic starter
 

jhonatha, olhando a rotina não é para ter problemas, o ideal seria ter anexado seu modelo para uma analise melhor.

Mas antes disto, verifique se estes numeros decimais não estão com o "Formato - TEXTO", se não for isto só olhando o modelo.

[]s

Bom Dia, acabei de enviar um modelo logo abaixo em um comentário está disponivel, chamado exem...
Pode verificar para mim por favor.
Desde já muito obrigado

 
Postado : 07/06/2016 11:04 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Experimente assim:

Sub Teste1()
Dim TempoInicial As String, TempoFinal As String
Dim lastRow As Integer
    lastRow = Cells(Cells.Rows.Count, "A").End(xlUp).Row
    TempoInicial = VBA.Replace(Sheets("Console").Range("b1").Value, ",", ".")
    TempoFinal = VBA.Replace(Sheets("Console").Range("b3").Value, ",", ".")
If TempoInicial <> "" And TempoFinal <> "" Then
    ActiveSheet.Range("$A$1:$G$1317").AutoFilter Field:=1, Criteria1:=">=" & TempoInicial, Operator:=xlAnd, _
    Criteria2:="<=" & TempoFinal
End If
End Sub

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

 
Postado : 07/06/2016 11:55 am
(@jhonathad)
Posts: 6
Active Member
Topic starter
 

Reinaldo

PARABÉNS DEU CERTO.
OBRIGADO!

 
Postado : 07/06/2016 12:02 pm