Notifications
Clear all

Macro - Filtro que exclui ao invés de incluir

10 Posts
3 Usuários
0 Reactions
3,344 Visualizações
Lauriene87
(@lauriene87)
Posts: 17
Active Member
Topic starter
 

Bom dia pessoal,

Primeiramente gostaria de falar que meu conhecimento de macros e VBA é bem próximo de 0.

O máximo é apertar o botãozinho de gravar macro e editar alguma coisinha no código, mas muito pouco.

Rsrsrsrsrs

Tenho uma planilha que possui uma macro (FaltaPedido) que diz o seguinte:

Primeiro filtrar por cor a coluna A (solicitante), depois limpar filtro, depois (e ai que começa meu problema), ele tem que filtrar todos os números de requisição, em que todas são números, porém tem alguns casos que não é necessário requisição, ou que ainda não tem requisição.

Neste caso eu preciso colocar NA, ou aguardando, etc. Só que quando eu coloco pra gravar a Macro ele não entende "Tirar o filtro de NA e Aguardando compras", ele entende filtrar por 10000000, 10000001, 10000002, etc, ou seja ele filtra por todos os números de req. um a um e o problema é que sempre que eu coloco uma nova linha de req. eu preciso modificar a macro.

O próximo passo que a macro faz, também é um filtro. Ela tem que filtrar os pedidos que ainda não tem número e fim.

Será que tem um jeito de colocar esta parte da macro que filtra pelo número de requisição, para excluir o que eu quero do filtro (NA, Aguardando, etc) ao invés de incluir todas as requisições?.

Segue o texto do código desta macro e coloquei em anexo um exemplo da minha planilha:

Sub FaltaPedido()
'
' FaltaPedido Macro
'

'
    Range("Tabela1[[#Headers],[Solicitante]]").Select
    ActiveSheet.ListObjects("Tabela1").Range.AutoFilter Field:=1, Criteria1:= _
        RGB(0, 0, 0), Operator:=xlFilterFontColor
    ActiveSheet.ShowAllData
    ActiveSheet.ListObjects("Tabela1").Range.AutoFilter Field:=9, Criteria1:= _
        Array("10000000", "10000001", "10000002", "10000003", "10000004", "10000005", _
        "10000006", "10000007", "10000008", "10000009", "10000010", "10000011", "10000012", _
        "10000013", "10000014", "10000015", "10000016", "10000017", "10000018", "10000019", _
        "10000020", "10000021", "10000022", "10000023", "10000024", "10000025", "10000026", _
        "10000027", "10000028", "10000029", "10000030", "10000031", "10000032", "10000033", _
        "10000034", "10000035", "10000036", "10000037", "10000038", "10000039", "10000040", _
        "10000041", "10000042", "10000043", "10000044", "10000045", "10000046", "10000047", _
        "10000048", "10000049", "10000050", "10000051", "10000052", "10000053", "10000054", _
        "10000056", "10000057", "10000058", "10000059", "10000060", "10000061", "10000062", _
        "10000063", "10000064", "10000065", "10000066", "10000067", "10000068", "10000069", _
        "10000070", "10000071", "10000072", "10000073", "10000074", "10000075", "10000076", _
        "10000077", "10000078", "10000079", "10000080", "10000081", "10000082", "10000083", _
        "10000084", "10000085", "10000086", "10000087", "10000088", "10000089", "10000090", _
        "10000091", "10000092", "10000120", "10000121", "10000122", "10000123", "10000124", _
        "10000125", "10000126", "10000127", "10000128", "10000129", "10000130", "10000131", _
        "10000132", "10000133", "10000134", "10000135", "10000136", "10000137", "10000138", _
        "10000139", "10000140", "10000141", "10000142", "10000143", "10000144", "10000145", _
        "10000146", "10000147", "10000148", "10000149", "10000150", "10000151", "10000152", _
        "10000153", "10000154", "10000155", "10000156", "10000157", "10000158", "10000159", _
        "10000160", "10000161", "10000162", "10000163", "10000164", "10000165", "10000166", _
        "10000167", "10000168"), Operator:=xlFilterValues
    ActiveSheet.ListObjects("Tabela1").Range.AutoFilter Field:=10, Criteria1:= _
        Array("Compras", "Marcos", "Tiago"), Operator:=xlFilterValues
    ActiveWindow.SmallScroll Down:=-27
End Sub

Vocês entenderam o que eu quero??

Bjss e mais uma vez obrigada!

 
Postado : 18/10/2013 8:22 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Experimente assim:

Sub FaltaPedido()
'
' FaltaPedido Macro
'
    Range("Tabela1[[#Headers],[Solicitante]]").Select
    ActiveSheet.ListObjects("Tabela1").Range.AutoFilter Field:=1, Criteria1:= _
        RGB(0, 0, 0), Operator:=xlFilterFontColor
    ActiveSheet.ShowAllData
    ActiveSheet.ListObjects("Tabela1").Range.AutoFilter Field:=9, Criteria1:= _
        "<>Aguardando", Operator:=xlAnd, Criteria2:="<>NA"
    ActiveSheet.ListObjects("Tabela1").Range.AutoFilter Field:=10, Criteria1:= _
        Array("Compras", "Marcos", "Tiago"), Operator:=xlFilterValues
End Sub

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

 
Postado : 18/10/2013 8:47 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Lauriene87,

Bom Dia!

Veja se assim lhe atende.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 18/10/2013 8:48 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Ops!

Não tinha visto a resposta do Reinaldo antes! A minha é a mesma coisa.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 18/10/2013 8:49 am
Lauriene87
(@lauriene87)
Posts: 17
Active Member
Topic starter
 

Muito obrigada aos dois!

Funcionou direitinho.

Não tinha pensado nisso!

Rsrsrsrs

 
Postado : 18/10/2013 8:52 am
Lauriene87
(@lauriene87)
Posts: 17
Active Member
Topic starter
 

Pessoal, só mais uma dúvida:

Caso eu precise que o filtro seja "é diferente" com mais de 02 critérios, tem como eu fazer??

Pois nos dois casos que vocês me enviaram, o filtro de número personalizado, só me dá duas opções, e neste caso realmente só tem 02 opções, mas se tiver por exemplo: NA, Aguardando compras, aguardando fornecedor, etc, eu consigo fazer??

 
Postado : 18/10/2013 12:35 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Lauriene87,

Boa Tarde!

Bom... do meu conhecimento (que não é lá essas coisas todas), acho que isso não é possível. É mais ou menos assim: Se for possível fazer na própria interface do Excel, então é possível fazer também com VBA... muito embora, existam coisas que se pode fazer com VBA que não são possíveis fazer na interface do Excel.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 18/10/2013 1:03 pm
Lauriene87
(@lauriene87)
Posts: 17
Active Member
Topic starter
 

Então, na interface do excel eu não consegui fazer, ai eu queria saber se dá pra fazer modificando diretamente no código fonte da macro..

 
Postado : 18/10/2013 1:13 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

O filtro do excel restringe a duas "variaveis" nessa situação.
Para situações com mais de duas "exclusões" ou mesmo "seleções" pode-se criar uma coluna auxiliar atribuindo-se um "valor" se o campo a ser filtrado atender.Por exemplo em T1=Énum(I1); onde for numero tera retorno =Verdadeiro, caso contrario Falso, então altere o filtro para essa coluna considerando =Verdadeiro ou <>Falso

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

 
Postado : 18/10/2013 1:55 pm
Lauriene87
(@lauriene87)
Posts: 17
Active Member
Topic starter
 

Obrigada Reinaldo, serviu direitinho!

 
Postado : 21/10/2013 6:00 am