Ir para conteúdo
  • Cadastre-se

Mensagem Recomendada

Bom dia,

Necessito de ajuda para criar um filtro de dados numa tabela excel.

Anexo a tabela  juntamente com a descrição da ajuda que necessito.

Muito Obrigado

Filtro.xlsx

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, Bernardo.

Veja se atende. Instale os dois códigos abaixo em um módulo comum. Vincule cada código a um botão.

Sub AplicaFiltro()
 Dim LC As Long, LR As Long, c As Long
  RemoveFiltro
  LC = Cells(14, Columns.Count).End(1).Column + 2
  LR = Cells(Rows.Count, 1).End(3).Row
   With ActiveSheet
    .Range("A14", .Cells(LR, LC)).AutoFilter 1, [A12]
     For c = LC - 2 To 15 Step -3
      If .Cells(14, c) <> .[A13] Then .Range(.Columns(c), .Columns(c + 2)).Hidden = True
     Next c
   End With
End Sub

Sub RemoveFiltro()
 With ActiveSheet
  .AutoFilterMode = False
  .Columns.EntireColumn.Hidden = False
 End With
End Sub

 


 

Osvaldo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Osvaldo,

Obrigado mas não é bem isso que necessito, por favor veja o ficheiro anexo. Coloquei uma segunda tabela abaixo da primeira para exemplificar melhor o que necessito.

Por favor veja o ficheiro anexo

Obrigado

Filtro_2.xlsm

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bernardo, desculpe, não funcionou porque o cabeçudo aqui esqueceu de informar:(tímido)

coloque em A12 a cor desejada para o filtro, exemplo Azul

coloque em A13 a letra desejada para o filtro, exemplo A


 

Osvaldo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
3 horas atrás, osvaldomp disse:

Bernardo, desculpe, não funcionou porque o cabeçudo aqui esqueceu de informar:(tímido)

coloque em A12 a cor desejada para o filtro, exemplo Azul

coloque em A13 a letra desejada para o filtro, exemplo A

:);) TOP Osvaldo era mesmo isso que necessitava.

Já agora, será que me consegues dar uma ajuda nas Listas Suspensas?

Pretendo criar 2 listas suspensas independentes.

Lista 1:

Dados B14:B55, mas na lista suspensa não deve aparecer dados repetidos nem células em branco.

Se possível definir a dimensão (altutra x largura) da lista quando se abre, , ou em alternativa definir o número de dados a visualizar quando se abre a lista.

Lista 2:

Dados B10:AD10, mas na lista suspensa não deve aparecer dados repetidos nem células em branco.

Se possível definir a dimensão (altutra x largura) da lista quando se abre, , ou em alternativa definir o número de dados a visualizar quando se abre a lista.

Já tentei com a opção na validação de dados do excel, mas não consigo obter o resultado pretendido.

Obrigado, tens sido uma ajuda impecável. Muito Obrigado mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sobre as listas suspensas experimente inserir Caixa de Listagem na planilha, que oferece mais recursos do que a Validação:

menu Desenvolvedor / Inserir / Controles de Formulário / Caixa de Listagem ou

menu Desenvolvedor / Inserir / Controles ActiveX / Caixa de Listagem (ListBox)

em seguida clique com o direito sobre a Caixa inserida / Formatar Controle ou no caso de ActiveX / Propriedades

Para obter uma lista sem repetição e sem vazios uma alternativa é copiar a lista, colar em uma coluna vazia / Dados / Remover Duplicatas / depois ordene, ou a lista pode ser dinâmica e obtida por fórmulas ( o Patropi é fera nisso).


 

Osvaldo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Osvaldo,

Obrigado pela dica.

Voltando aos filtros, preciso de uma ajuda no filtro horizontal, é que não está filtrando.

Anexo o ficheiro com o seu código inserido par você ver por favor.

Os dados horizontais a filtrar vão de O16:LB16 mas não estão aFiltro3.xlsm filtrar e a mostrar somente os "a"

Obrigado

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, jsbernardo disse:

Voltando aos filtros, preciso de uma ajuda no filtro horizontal, é que não está filtrando.
Não está filtrando porque o código foi preparado para a estrutura da planilha do seu primeiro post e agora você está tentando utilizá-lo em outra planilha com estrutura diferente :aborrecido:
Fiz as alterações conforme a estrutura da nova planilha, coloque o código abaixo no lugar do anterior. O código RemoverFiltro permanece.

 

... mas não estão a filtrar e a mostrar somente os "a"
Você colocou na linha 16 letras maiúsculas, A, C, H, ... porém no critério (A15) você colocou "a", que é diferente de "A".
Acrescentei um comando ao código para aceitar minúsculas e maiúsculas.

Sub AplicaFiltro()
 Dim LC As Long, LR As Long, c As Long
  Application.ScreenUpdating = False
  RemoveFiltro
  LC = Cells(16, Columns.Count).End(1).Column + 2
  LR = Cells(Rows.Count, 1).End(3).Row
   With ActiveSheet
    .Range("A17", .Cells(LR, LC)).AutoFilter 1, [A14]
     For c = LC - 2 To 15 Step -3
      If .Cells(16, c) <> UCase(.[A15]) Then .Range(.Columns(c), .Columns(c + 2)).Hidden = True
     Next c
   End With
  Application.ScreenUpdating = True
End Sub

 


 

Osvaldo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Osvaldo, pois foi desculpa.

Mas olha continua a existir um conflito entre maiúsculas ou minúsculas em A15 e as maiúsculas ou minúsculas entre O16:LB16. Consegues alterar para funcionar independentemente de serem maiúsculas ou minúsculas em qualquer local.

O filtro também deveria esconder as células em branco (ou seja sem referências) de O16:LB16 e não o faz.

Anexo ficheiro

Muito Obrigado. Abraço

Filtro4.xlsm

Compartilhar este post


Link para o post
Compartilhar em outros sites
4 horas atrás, jsbernardo disse:

Mas olha continua a existir um conflito entre maiúsculas ou minúsculas em A15 e as maiúsculas ou minúsculas entre O16:LB16.

Antes em O16:LB16 só havia maiúsculas e agora você colocou também minúsculas :aborrecido:

O filtro também deveria esconder as células em branco (ou seja sem referências) de O16:LB16 e não o faz.

Antes não havia células vazias :aborrecido:

Sugestão - nos próximos tópicos que você abrir tire um tempo para elaborar de forma definitiva a sua planilha.

substitua as duas linhas conforme abaixo para contornar os problemas apontados :

  LC = Cells(17, Columns.Count).End(1).Column + 2
 
      If UCase(.Cells(16, c)) <> UCase(.[A15]) Then .Range(.Columns(c), .Columns(c + 2)).Hidden = True

 


 

Osvaldo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, Osvaldo

A funcionar 100%, o meu muito obrigado.

Sim tem razão, deveria ter desenvolvido totalmente primeiro a planilha.

Peço desculpa por isso, mas foi uma criação em que quase todos os dias tive "ideias" novas. Vou tentar numa próxima fazer tudo de uma vez.

Muito Obrigado pela ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Quer postar a sua dúvida? Cadastre-se pois é rápido e fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×
×
  • Criar Novo...