Note: The other languages of the website are Google-translated. Back to English

Como filtrar automaticamente as linhas com base no valor da célula no Excel?

Normalmente, a função Filtro no Excel pode nos ajudar a filtrar quaisquer dados conforme precisamos, mas, às vezes, eu gostaria de filtrar automaticamente as células com base em uma entrada manual de célula, o que significa que quando eu insiro um critério em uma célula, os dados podem ser filtrado automaticamente de uma vez. Existem boas ideias para lidar com esse trabalho no Excel?

Filtre automaticamente as linhas com base no valor da célula inserido com o código VBA

Filtre os dados por vários critérios ou outra condição específica, como o comprimento do texto, diferenciando maiúsculas de minúsculas


Filtre automaticamente as linhas com base no valor da célula inserido com o código VBA

Supondo que eu tenha a seguinte faixa de dados, agora, ao inserir os critérios nas células E1 e E2, quero que os dados sejam filtrados automaticamente conforme a captura de tela abaixo:

doc filtro automático 1

1. Vá para a planilha cuja data você deseja filtrar automaticamente com base no valor da célula que você inseriu.

2. Clique com o botão direito na guia da planilha e selecione Ver código a partir do menu de contexto, no pop-out Microsoft Visual Basic para Aplicações janela, copie e cole o código a seguir no espaço em branco Módulo janela, veja a imagem:

Código VBA: filtra automaticamente os dados de acordo com o valor da célula inserido:

Private Sub Worksheet_Change(ByVal Target As Range)
'Updateby Extendoffice 20160606
   If Target.Address = Range("E2").Address Then
       Range("A1:C20").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("E1:E2")
   End If
End Sub

doc filtro automático 2

Nota: No código acima, A1: C20 é o intervalo de dados que você deseja filtrar, E2 é o valor alvo que você deseja filtrar com base, e E1: E2 é a sua célula de critérios que será filtrada com base. Você pode alterá-los conforme sua necessidade.

3. Agora, ao inserir os critérios na célula E1 e às E2 e imprensa Entrar chave, seus dados serão filtrados pelos valores das células automaticamente.


Filtre os dados por vários critérios ou outra condição específica, como o comprimento do texto, diferenciando maiúsculas de minúsculas

Filtre os dados por vários critérios ou outra condição específica, como pelo comprimento do texto, diferenciando maiúsculas de minúsculas, etc.

Kutools for Excel'S Super Filtro feature é um utilitário poderoso, você pode aplicá-lo para concluir as seguintes operações:

  • Filtre dados com vários critérios; Filtre os dados por comprimento do texto;
  • Filtre os dados por maiúsculas / minúsculas; Filtrar data por ano / mês / dia / semana / trimestre

Kutools for Excel: com mais de 300 suplementos úteis do Excel, grátis para testar sem limitação em 30 dias. Baixe e teste grátis agora!


Demonstração: filtre automaticamente as linhas com base no valor da célula inserido com o código VBA


As melhores ferramentas de produtividade para escritório

O Kutools for Excel resolve a maioria dos seus problemas e aumenta sua produtividade em 80%

  • armadilha para peixes: Insira rapidamente fórmulas complexas, gráficos e qualquer coisa que você tenha usado antes; Criptografar células com senha; Criar lista de discussão e enviar emails ...
  • Barra Super Fórmula (edite facilmente várias linhas de texto e fórmula); Layout de leitura (ler e editar facilmente um grande número de células); Colar na faixa filtrada...
  • Mesclar células / linhas / colunas sem perder dados; Dividir o conteúdo das células; Combinar linhas / colunas duplicadas... Evite células duplicadas; Comparar intervalos...
  • Selecione Duplicado ou Único Linhas; Selecione linhas em branco (todas as células estão vazias); Super Find e Fuzzy Find em muitos livros; Seleção aleatória ...
  • Cópia exata Várias células sem alterar a referência da fórmula; Criação automática de referências para várias folhas; Inserir marcadores, Caixas de seleção e mais ...
  • Extrair Texto, Adicionar texto, remover por posição, Remover Espaço; Criar e imprimir subtotais de paginação; Converter entre conteúdo de células e comentários...
  • Super Filtro (salvar e aplicar esquemas de filtro a outras planilhas); Classificação Avançada por mês / semana / dia, frequência e mais; Filtro Especial por negrito, itálico ...
  • Combine pastas de trabalho e planilhas; Mesclar tabelas com base em colunas-chave; Divida os dados em várias folhas; Conversão em lote de xls, xlsx e PDF...
  • Mais de 300 recursos poderosos. Suporta Office / Excel 2007-2019 e 365. Suporta todos os idiomas. Fácil implantação em sua empresa ou organização. Teste gratuito de 30 dias com recursos completos. Garantia de devolução do dinheiro em 60 dias.
guia kte 201905

Guia do Office traz interface com guias para o Office e torna seu trabalho muito mais fácil

  • Habilite a edição e leitura com guias em Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Abra e crie vários documentos em novas guias da mesma janela, em vez de em novas janelas.
  • Aumenta sua produtividade em 50% e reduz centenas de cliques do mouse para você todos os dias!
parte inferior da aba do escritório
Comentários (36)
Ainda não há classificações. Seja o primeiro a avaliar!
Este comentário foi feito pelo moderador no site
MUITO OBRIGADO PELA FÓRMULA ACIMA - FUNCIONA MUITO BEM.
Este comentário foi feito pelo moderador no site
Eu tenho tentado filtrar uma planilha com uma variedade de códigos (tirados de vários sites, incluindo este), mas nenhum parece funcionar. Em uma planilha com informações no intervalo de células A101:EF999 (sim, grande), quero filtrar automaticamente a planilha com base em um código de três letras que insiro na célula B5, que deve corresponder às linhas com esse mesmo código na coluna B101 -B999. Um trecho de amostra ficaria assim: ABCDE 5 ABC ... 101 ABC 102 DEF 103 GHI 104 ABC 105 JKL 106 ABC 107 DEF Ao selecionar "ABC" na célula B5, apenas as linhas 101, 104 e 106 devem ser exibidas, mas nada acontece. Há algo que eu estou negligenciando aqui? Qualquer ajuda seria muito apreciada!
Este comentário foi feito pelo moderador no site
Como faço para desfazê-lo? Ele oculta todos os meus dados.
Este comentário foi feito pelo moderador no site
Olá, o código abaixo funciona perfeitamente. No entanto, como desabilito a macro se quiser cancelar a filtragem? Private Sub Worksheet_Change(ByVal Target As Range) 'Updateby Extendoffice 20160606 If Target.Address = Range("E2").Address Then Range("A1:C20").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("E1:E2") End If End Sub
Este comentário foi feito pelo moderador no site
Em Range("E2").Address exclua qualquer entrada. Todos serão "desfiltrados".
Este comentário foi feito pelo moderador no site
Não funciona para mim, pode ser que eu tenha o Office 2010? não faz nada :S
Este comentário foi feito pelo moderador no site
Obrigado por esta escrita! Estou tentando ajustar o código para permitir uma faixa de aceitação.

Exemplo: eu insiro 5 e ele filtra e mostra apenas tudo o que está dentro de 5 de 5, (então 4.5 a 5.5)
Este comentário foi feito pelo moderador no site
está funcionando e otimo... obrigado
Este comentário foi feito pelo moderador no site
Obrigado por este código. Eu tenho tentado modificá-lo para funcionar melhor para mim, mas tendo dificuldade.

Minha planilha tem dados de A2:G2280 A coluna A contém nomes de ruas. Quero poder digitar pelo menos parte do nome da rua em A1 e exibir apenas dados que contenham A1 no todo ou em parte. Então, se eu digitar Bro em A1, verei as linhas que têm Broad, Broadway e Brook. Claro que se A1 estiver em branco eu veria tudo.



Desculpe, não sou fluente na linguagem do Excel VBA, sou apenas um expedidor do 911 que sabe que é uma maneira mais fácil.



Obrigado.



Marca
Este comentário foi feito pelo moderador no site
Olá Mark,
Para resolver seu problema, aplique o seguinte código VBA:
Nota: No código abaixo, A1 é a célula que você deseja inserir os critérios, A2:D20 é o intervalo de dados, A é a coluna que contém os critérios dos quais você deseja filtrar, altere as referências da célula para as suas próprias .

Private Sub Worksheet_Change (ByVal Target As Range)
Dim xRg como intervalo
Dim xRRg como intervalo
Dim xFNum como inteiro
On Error Resume Next
If Target.Address <> Range("A1").Address Then Exit Sub
Set xRg = Range("A2:D20").CurrentRegion
Application.ScreenUpdating = False
If Target.Text = "" Then
xRg.Linhas.Selecionar
Selection.EntireRow.Hidden = False
Application.ScreenUpdating = True
Exit Sub
Se acabar
Para xFNum = 1 Para xRg.Rows.Count
Set xRRg = xRg.Range("A" & xFNum)
xRRg.Linhas.Selecionar
If InStr(xRRg.Text, Target.Text) > 0 Then
Selection.EntireRow.Hidden = False
Outro
Selection.EntireRow.Hidden = True
Se acabar
Próximo xFNum
Application.ScreenUpdating = True
End Sub

Por favor, tente, espero que possa ajudá-lo!
Este comentário foi feito pelo moderador no site
Obrigado pela ajuda.
Mudei A2:D20 para A3:G2281 para representar meu campo de dados. Agora, quando digito qualquer coisa na célula A1 e abro as linhas da célula, 2-109 ficam ocultas. Não está filtrando e exibindo apenas as linhas que contêm todo ou parte do que está inserido na célula A1.



Alguma idéia?
Este comentário foi feito pelo moderador no site
Olá skyyang,
seu código funciona perfeitamente, mas tenho uma dúvida: Se eu não quiser ter um critério de filtro na célula A1 e deixar a célula vazia, não será mais exibida nenhuma linha. Então tudo é filtrado. Assim como Mark queria "Claro que se A1 estiver em branco eu veria tudo" não funciona, não é?
Seria bom se você pudesse me ajudar.
saudações
Carsten
Este comentário foi feito pelo moderador no site
Olá skyyang,
seu código funciona perfeitamente, mas tenho uma dúvida: Se eu não quiser ter um critério de filtro na célula A1 e deixar a célula vazia, não será mais exibida nenhuma linha. Então tudo é filtrado. Assim como Mark queria "Claro que se A1 estiver em branco eu veria tudo" não funciona, não é?
Seria bom se você pudesse me ajudar.
saudações
Carsten
Este comentário foi feito pelo moderador no site
Olá, Carsten,
Ao deixar a célula A1 vazia, todas as linhas de dados são exibidas, ao inserir qualquer caractere que deseja filtrar, funcionará corretamente. Como está o seu problema, por favor insira sua folha de problemas como captura de tela aqui.

Obrigado!
Este comentário foi feito pelo moderador no site
O que acontece se você tiver GRADE11 e GRADE12, por exemplo. O filtro mostrará isso também se você tentar filtrar
no GRADE1?
Este comentário foi feito pelo moderador no site
Olá, bob,
Sim, como você disse, ao inserir parte do texto que deseja filtrar, todas as células que contêm o texto da parte serão filtradas. Portanto, se você digitar Grade1, todas as células que contiverem Grade1, Grade11, Grade123... serão filtradas.
Este comentário foi feito pelo moderador no site
O script VB funcionou lindamente. Muito obrigado pela postagem!
Este comentário foi feito pelo moderador no site
Private Sub Worksheet_Change (ByVal Target As Range)
'Atualizar por Extendoffice 20160606
If Target.Address = Range("E2").Address Then
Range("A1:C20").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("E1:E2")
Se acabar
End Sub


E2 HUCRESI YERINE E SUTUNUNUNA YAZILAN SON SATIRA GORE FILITRELEME YAPABILIR MI


De acordo com o código mencionado acima, é possível fazer a filtragem de acordo com os dados escritos até a última linha da coluna E?


espero ajuda e obrigado pela ajuda
Este comentário foi feito pelo moderador no site
Olá, Murat,
O código acima funciona bem em toda a planilha, você só precisa alterar as referências das células para sua necessidade. Por favor, tente, obrigado!
Este comentário foi feito pelo moderador no site
Não sei como posso alterar a referência da célula.
Este comentário foi feito pelo moderador no site
Existe uma maneira de continuar a filtrar com caixas adicionais. Quando escrevo como ElseIf, ele segue apenas o comando ElseIf.
Este comentário foi feito pelo moderador no site
Então eu tenho um monte de valores e depois uma tabela de dados. Eu estou querendo saber se eu posso filtrar essa tabela com base nos valores de forma semelhante ao que é explicado acima. Por exemplo, eu gostaria de clicar em uma célula que tenha o valor 3, que corresponde a 3 registros (200 linhas, 25 colunas) que atendem a uma condição e depois filtrar minha tabela para mostrar apenas esses registros. Um exemplo de condição seria, se uma variável for maior que 100. Eu tenho mais de 100 dessas condições e é por isso que gostaria que minha tabela fosse vinculada a ela de alguma forma. Qualquer ajuda seria muito apreciada. No seu exemplo fornecido, seria semelhante a se você quisesse apenas todas as idades acima de 3, 6, 9, 12 etc e tivesse 25 variáveis ​​semelhantes. valor de uma lista que diz algo como idade>3 - 3 registros, idade>2 - 6 registros etc
Este comentário foi feito pelo moderador no site
Pode haver um erro nas instruções. Em vez de colar o código em um Módulo em branco, deve-se colá-lo na janela Planilha. Por exemplo, se a macro deve funcionar em Sheet1, o código deve ser colado em Microsoft Excel Objects -> Sheet1(Sheet1). Só então funciona para mim no Excel 2016.

Obrigado pelo código!
Este comentário foi feito pelo moderador no site
Olá, mjr,
Não há erro neste artigo, o artigo dizia, você deve colocar o código VBA no módulo da planilha clicando com o botão direito do mouse no nome da planilha e, em seguida, escolha Exibir código para ir para o módulo.
Mas, sua operação está correta também.
Obrigado pelo seu comentário.
Este comentário foi feito pelo moderador no site
Olá,

E se eu obtiver os dados filtrados em uma guia diferente (folha 2) na mesma pasta de trabalho e a célula à qual o filtro precisa se referir estiver na primeira guia (folha 1). Eu usei esse VBA mas não está funcionando assim, só se eu tiver as duas células de critérios(E2 neste VBA) na mesma aba com os dados filtrados(A1:C20)
Este comentário foi feito pelo moderador no site
Ola pessoal,
explicação perfeita, muito obrigado.
1 Pequena dúvida: se eu quiser filtrar com 2,3 4 ou mais critérios como faço isso?
Por exemplo, quero dizer que quero ver o nome Henry, com o Grau 1 e esta Idade... então não apenas 1 critério, mas por exemplo 3..=?


obrigado pela resposta


Atenciosamente,


TIM
Este comentário foi feito pelo moderador no site
Olá, tim,
Para filtrar automaticamente os dados com base em vários critérios, você deve aplicar o código abaixo: (altere as referências das células conforme sua necessidade)

Private Sub Worksheet_Change (ByVal Target As Range)
'Atualizar por Extendoffice
Dim xVStr As String
Dim xFStr As String
xVStr = "E22:G22" 'o critério que você deseja filtrar com base em
xFStr = "E21:G22" 'o intervalo contém o cabeçalho dos critérios
Se não (Intersect(Range(xVStr), Target) não é nada) então
Range("A1:C17").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=Range(xFStr)
Se acabar
End Sub


Por favor, tente, espero que possa ajudá-lo!
Este comentário foi feito pelo moderador no site
Obrigado, por isso, foi realmente útil. eu só tenho uma pergunta, depois de selecionar o nome no menu suspenso (tenho nomes como critério), ele mostra apenas pessoas com esse nome, como deveria, mas como posso fazer isso depois de selecionar um nome, então eu quer assim ver todas as linhas da minha tabela??

Espero que você possa me ajudar.

saudações gentis
Este comentário foi feito pelo moderador no site
Olá Peter,
Este código funcionou bem para ajustar as linhas inteiras dos dados, você poderia inserir o intervalo da tabela corretamente?

A1:C20 é o intervalo de seus dados, E1:E2 é o intervalo de critérios.
Range("A1:C20").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("E1:E2")
Este comentário foi feito pelo moderador no site
Muito obrigado por isso. Funcionou bem para mim até certo ponto, por favor, deixe-me explicar:

Eu tenho várias tabelas na minha pasta de trabalho. Quando apliquei o código acima, funcionou apenas para uma tabela, mas não para as outras duas tabelas. Digamos que a primeira tabela seja, como no seu exemplo, de A1:C20. A segunda tabela é de A22:C40. O terceiro de A42:C60. Todas as tabelas têm a informação sobre o "Grau", no entanto têm colunas e datas diferentes e, portanto, não podem ser consolidadas em uma grande tabela, mas sim em 3 tabelas menores.

Como o código precisaria gostar para que se eu colocasse os critérios: "Grade1", todas as 3 tabelas serão automaticamente filtradas para "Grade1" ?

Muito obrigado antecipadamente.

Cumprimentos
Este comentário foi feito pelo moderador no site
Oi lá,

Obrigado pelo ótimo conteúdo, no entanto, estou tendo alguns problemas e queria saber se você tem alguma ideia do motivo.

Eu ajustei meus intervalos para que meu código leia:

Sub AutoFiltro()
If Target.Address = Range("E13:F14").Address Then
Planilhas('Arquivo de dados').Range("A1:C20").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("F10:F1048576")
Se acabar
End Sub


No entanto, quando executo a macro, aparece uma mensagem "Erro de compilação: Erro de sintaxe".

Obrigado antecipadamente

Stan
Este comentário foi feito pelo moderador no site
Olá, Stan,
Você define o intervalo de dados e o intervalo de critérios corretamente no código? Ou você pode usar seu intervalo de dados como uma captura de tela aqui.
Obrigado!
Este comentário foi feito pelo moderador no site
Olá, existe uma maneira de modificar rapidamente o código VBA para filtrar valores maiores do que na célula selecionada?
Não há comentários postados aqui ainda
carregar mais
Deixe o seu comentário
Postando como convidado
×
Avalie esta postagem:
0   Personagens
Locais sugeridos