Notifications
Clear all

Filtro Avançado

3 Posts
1 Usuários
0 Reactions
1,326 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Pessoal, boa tarde!

Estou trabalhando com um Filtro Avançado (via Macro), porém estou com várias dúvidas:

TIPO UF
=C =PR
=C =SC

Se monto meu parâmetro assim, ele funciona corretamente, mas se eu mudar o operador (abaixo), ele não está me retornando nenhum dado:

TIPO UF
=C <>PR
=C <>SC

Para o "diferente"(<>) funcionar corretamente, tenho que montar assim:

TIPO UF UF
=C <>PR <>SC

Mas nesse caso, se eu mudar o operador p/ "Igual" (=), aí também não retorna nada...

Como posso montar de uma única forma, para qualquer operador?

Abs!!

 
Postado : 20/01/2010 3:44 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Olá, Ricardo.
Observe que a sintaxe que vc utilizou para o caso em que os registros são iguais é do tipo OU, retornando valores que sejam iguais a PR OU iguais a SC.
No caso de filtrar registros diferentes,a sintaxe é do tipo E, retornando valores diferentes de PR E diferentes de SC.
Desta forma, vc terá que usar sintaxes modificadas para cada um dos operadores, colocando esta condição no seu código.
Poderia transcrever o código VBA para que possamos orientá-lo nas alterações necessárias?
[ ]s

 
Postado : 24/01/2010 12:34 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Aqui eu monto os critérios:

Dim vOperador
If Me.cmbOperadores = "Igual a" Then vOperador = "="
If Me.cmbOperadores = "Diferente de" Then vOperador = "<>"
If Me.cmbOperadores = "Menor do que" Then vOperador = "<"
If Me.cmbOperadores = "Menor ou igual a" Then vOperador = "<="
If Me.cmbOperadores = "Maior do que" Then vOperador = ">"
If Me.cmbOperadores = "Maior ou igual a" Then vOperador = ">="

Do Until ActiveCell = ""
If ActiveCell = Me.cmbCampos Then
ActiveCell.Offset(1, 0).Select
Do Until ActiveCell = ""
If ActiveCell <> "" Then
ActiveCell.Offset(1, 0).Select
End If
Loop
ActiveCell = "'" & vOperador & Me.txtExpressao
Exit Do
Else:
ActiveCell.Offset(0, 1).Select
End If
Loop

Aqui eu monto o Filtro:

'Nomeia Região (tabela)
Range("A2:S2").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveWorkbook.Names.Add Name:="tabela", RefersToR1C1:=Selection

'Nomeia Região (criterios)
Sheets("Critérios").Select
Range("A1").Select
Selection.CurrentRegion.Select
ActiveWorkbook.Names.Add Name:="criterios", RefersToR1C1:=Selection

Verif_Crit

'Filtro Avançado
Plan9.Select

Sheets("janeiro2010").Range("tabela").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("criterios"), CopyToRange:=Range("A1"), Unique:=False

 
Postado : 25/01/2010 5:46 am