Filtrar instantaneamente os dados de uma tabela
Neste novo artigo, vou mostrar-te como podes filtrar um tabela diretamente, e instantaneamente com uma caixa de texto que permite pesquisar qualquer valor e devolver os dados de imediato! Vamos lá?
Quanto trabalhamos com tabelas uma das opções mais utilizadas para analisar os dados é recorrer ao filtro automático, que nos permite analisar de forma rápida e eficiente a informação pretendida.
Atualmente dispomos da função FILTRAR [FILTER] que permite obter um intervalo de dados filtrado de acordo com o critério ou critérios que pretendemos, contudo, o resultado não é definido diretamente na tabela.
Não percas aqui o cenário de exemplo que partilho contigo, assim como o processo passo a passo. Se tiveres alguma dúvida, envia-nos a uma mensagem... ficamos à tua espera!
Faça aqui o download dos seus ficheiros de apoio!
Utilizar os controlos para filtrar
Para filtrar a tabela vamos utilizar controlos ActiveX que permitem interagir com a aplicação, através de código VBA.
Vou começar por aplicar 3 comandos de opção (Botões de Opção) e uma Caixa de Texto.
Os botões de Opção vão ser uteis para selecionar o campo pretendido para aplicar o filtro e a Caixa de Texto será utilizada para fazer a pesquisa do termo de forma instantânea.
Acedemos ao Menu Programador e ao botão Inserir para inserir os comandos. Caso não tenhas o menu Programador, deves aceder ao menu Ficheiro e às Opções do Excel, escolhendo a opção de Personalizar o Friso.
Neste caso começo por inserir um botão de opção e de seguida acedemos às propriedades do botão.
Nas propriedades alteramos o nome do objeto [Name] e a sua apresentação [Caption].
Repetimos o processo para mais 2 botões de opção, um para o campo Produto e outro para o Campo Loja da tabela.
De seguida inserimos um novo controlo, a caixa de texto para pesquisar o termo a filtrar.
Desenhamos a caixa de texto e acedemos às suas propriedades para podermos alterar o seu aspeto ou opções. Neste caso vou apenas alterar o nome do objeto.
Criar o código para filtrar os dados
Vamos agora definir o código para filtrar os dados da tabela. O filtro será feito com o critério aplicado na Caixa de Texto, mas o campo a filtrar será definido pelo botão de opção selecionado que respetivamente indicará o campo nº 1, 2 ou 3 da nossa tabela.
Assim, no código de cada botão de opção vamos inserir o seguinte código.
Public Valor As Integer Private Sub optMarca_Click() Valor = 1 End Sub Private Sub optProduto_Click() Valor = 2 End Sub Private Sub optLoja_Click() Valor = 3 End Sub
Para acederes ao código de cada botão basta efetuares um duplo clique sobre o objeto.
Neste código estamos a criar uma variável “Valor” que pode assumir os 3 números, um para cada botão de opção.
No código de cada botão de opção definimos o respetivo valor.
De seguida aplicamos o código na Caixa de Texto, que irá então definir o critério para o filtro aplicado na tabela.
Private Sub TextPesquisa_Change() If TextPesquisa.Text = "" Then Folha1.ListObjects("Produtos").AutoFilter.ShowAllData Else Folha1.ListObjects("Produtos").Range.AutoFilter _ Field:=Valor, Criteria1:=TextPesquisa.Text End If End Sub
Neste Código estamos a definir uma condição em primeiro lugar, para que quando a caixa de texto não tiver nenhum valor, possamos ver todos os dados da tabela.
Caso a Caixa de texto esteja preenchida, fará então o filtro na Tabela [ListObjects], onde o campo [Field] será definido pelo valor do botão de Opção e o Critério [Criteria1] será definido pelo texto da Caixa de Texto.
Desta forma, quando testares conseguirás ver o filtro a ser aplicado instantaneamente sobre a tabela diretamente nos teus dados!
Outros conteúdos relevantes:
SUMIFS - Resultados dinâmicos com INDEX e MATCH
O objetivo é poder mostrar-lhe como pode obter resultados mais dinâmicos e diferentes, consoante a coluna de dados...
Usar a Função nova LAMBDA para reutilizar cálculos e conjugações
Confira como a função LAMBRA, do Microsoft Excel, vai revolucionar a forma como realizamos operações, reutilizando cálculos ou conjugações de fórmulas.