Notifications
Clear all

Autofiltro com vários critérios de texto

14 Posts
3 Usuários
0 Reactions
3,588 Visualizações
(@jonascruz)
Posts: 0
New Member
Topic starter
 

Pessoal, boa tarde.

Estou tentando filtrar uma coluna com diversos critérios e preciso que todos sejam filtrados. Seria uma operação AND de todos esses critérios

Sub filtraTextoNcriterios()
ActiveSheet.Range("A2:A109").AutoFilter Field:=1, Criteria1:=Array("serv*", "*laudo*", "*Taxa*", "*BANCO*", "*SABESP*", "*Licen*", "*PACOTE DE SW*", "*APROPRIAÇÃO DE MÃO*", "*FISTEL*", "*ANATEL*", "*ambiental*", "*Prefeitura*", "*Crea*", "*CELPE*", "*cobrança art*", "*alvará*", "*SW*", "*compartilhamento de sites*", "*software*", "*licença*", "*vistoria*", "*licenca*", "*ENERGIA ELETRICA*"), Operator:=xlFilterValues
End Sub

Nesse exemplo, eu preciso filtrar todas as linhas que começam com "serv" e todas as linhas quem contenham "Taxa" e todas as linhas que contenham "IPTU" e assim por diante.
Esse meu código retornou 0 linhas.

e sendo um campo livre, as pessoas podem digitar "serv", "Serv" ou "SERV". É possível aplicar uma função Upper nos textos do array?

 
Postado : 14/09/2016 1:46 pm
(@mprudencio)
Posts: 0
New Member
 

O Auto Filtro simplesmente nao resolve?

 
Postado : 14/09/2016 4:41 pm
(@jonascruz)
Posts: 0
New Member
Topic starter
 

Meu auto filtro seleciona todas as linhas, ou seja, todas ficam ocultas.

O objetivo é selecionar as células que atendam ao critério dos textos e na coluna ao lado "B" eu preciso inserir a informação "Atende ao critério".

Se vc executar a macro no meu arquivo verá que não aparece nenhuma linha e nem todas as células atendem ao critério.

Por exemplo:
A célula A2 contém o texto "SERVIÇO - GERENCIAMENTO DE PROJETOS" atende ao critério "serv*" e na célula B2 que gostaria de escrever "Atende ao critério".
Mas para isso, seria necessário aplicar a função Upper em A2 e colocar no critério "SERV*" para garantir que o critério seja atendido.
Esse exemplo não é o ideal para demonstrar o que quero, mas isso acontece em diversas outras células.

 
Postado : 15/09/2016 6:59 am
(@jonatas-88)
Posts: 0
New Member
 

Boa tarde Jonas.

Sou novo no fórum, essa é minha primeira postagem.

A tua dúvida é semelhante a outro problema que precisei resolver.

No seu código, basta colocar o "=" antes de cada item do array, conforme exemplo abaixo:

*************************************************************************************************************************
Sub filtraTextoNcriterios()
'
' filtraTextoNcriterios Macro
'
ActiveSheet.Range("A2:A109").AutoFilter Field:=1, Criteria1:=Array("=serv*", "=*civil*"), Operator:=xlFilterValues
'
End Sub

*************************************************************************************************************************

Aqui funcionou o filtro.

*PS: O interessante seria criar uma caixa de entrada, para que antes de aplicar o filtro, você consiga digitar os textos que filtrem no Array.

Espero ter ajudado.

 
Postado : 15/09/2016 10:11 am
(@jonascruz)
Posts: 0
New Member
Topic starter
 

jonatas.88

Tentei esses 2 códigos e não funcionaram:

ActiveSheet.Range("A2:A109").AutoFilter Field:=1, Criteria1:=Array("=SERV", "=laudo", "=Taxa"), Operator:=xlFilterValues
ActiveSheet.Range("A2:A109").AutoFilter Field:=1, Criteria1:=Array("=SERV*", "=*laudo*", "=*Taxa*"), Operator:=xlFilterValues
 
Postado : 15/09/2016 10:23 am
(@jonatas-88)
Posts: 0
New Member
 

jonascruz

ActiveSheet.Range("A2:A109").AutoFilter Field:=1, Criteria1:=Array("=serv*", "=*laudo*"), Operator:=xlFilterValues
ActiveSheet.Range("A2:A109").AutoFilter Field:=1, Criteria1:=Array("=SERV*", "=*laudo*"), Operator:=xlFilterValues

Aqui funcionou mesmo com o texto em caixa baixa e aplicou o filtro conforme figura anexada.

 
Postado : 16/09/2016 5:38 am
(@jonascruz)
Posts: 0
New Member
Topic starter
 

Qual código gerou esse seu resultado?

 
Postado : 16/09/2016 5:51 am
(@jonatas-88)
Posts: 0
New Member
 
ActiveSheet.Range("A2:A109").AutoFilter Field:=1, Criteria1:=Array("=serv*", "=*laudo*"), Operator:=xlFilterValues

Esse código gera o filtro.

 
Postado : 16/09/2016 5:55 am
(@jonascruz)
Posts: 0
New Member
Topic starter
 

Testei aqui e funcionou sim.

Muito obrigado pela ajuda e mesmo sendo sua primeira postagem, já ganha um agradecimento.

 
Postado : 16/09/2016 7:13 am
(@jonascruz)
Posts: 0
New Member
Topic starter
 

Desculpe, mas realmente funcionou com 2 filtros.

Quando inseri o 3º filtro, não funciona, pq acaba filtrando tudo.

ActiveSheet.Range("A2:BD109").AutoFilter Field:=1, Criteria1:=Array("=serv*", "=*laudo*", "=*Taxa*"), Operator:=xlFilterValues
 
Postado : 16/09/2016 8:07 am
(@jonatas-88)
Posts: 0
New Member
 

Realmente com o 3º item ele não filtrou.

Vamos tentar descobrir porque o array não executa essa operação.

 
Postado : 16/09/2016 8:21 am
(@jonascruz)
Posts: 0
New Member
Topic starter
 

Eu preciso fazer esses N filtros e "carimbar" na coluna ao lado a informação "Atende ao critério".

Talvez se eu "carimbar" o texto de 2 em 2 talvez resolva, se não houver outra solução...

 
Postado : 16/09/2016 8:44 am
(@jonatas-88)
Posts: 0
New Member
 

Essa seria uma saída mesmo.
Vou tentar entender melhor como funciona o array, eu também preciso aplicar ele e nunca utilizei.

 
Postado : 16/09/2016 9:14 am
(@jonascruz)
Posts: 0
New Member
Topic starter
 

Quando você tenta fazer o Filtro Personalizado manualmente, o Excel só oferece 2 opções. Deve ser esse o motivo de só funcionar com 2.

Alguem mais tem idéia de como resolver esse problema?

 
Postado : 16/09/2016 10:13 am