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

Como reaplicar automaticamente o filtro automático quando os dados são alterados no Excel?

No Excel, quando você aplica o filtros função para filtrar dados, o resultado do filtro não será alterado automaticamente com as mudanças de dados em seus dados filtrados. Por exemplo, quando eu filtro todas as maçãs dos dados, agora, eu altero um dos dados filtrados para BBBBBB, mas o resultado não será alterado, bem como a captura de tela a seguir mostrada. Neste artigo, falarei sobre como reaplicar o filtro automático automaticamente quando os dados são alterados no Excel.

doc auot atualizar filtro 1

Reaplicar automaticamente o filtro automático quando os dados forem alterados com o código VBA


seta azul bolha direita Reaplicar automaticamente o filtro automático quando os dados forem alterados com o código VBA

Normalmente, você pode atualizar os dados do filtro clicando no recurso Reaplicar manualmente, mas, aqui, apresentarei um código VBA para você atualizar os dados do filtro automaticamente quando os dados forem alterados. Faça o seguinte:

1. Vá para a planilha cujo filtro de atualização automática deseja atualizar quando os dados forem alterados.

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 seguinte código na janela do módulo em branco, veja a captura de tela:

Código VBA: filtro de reaplicação automática quando os dados mudam:

Private Sub Worksheet_Change(ByVal Target As Range)
   Sheets("Sheet3").AutoFilter.ApplyFilter
End Sub

doc auot atualizar filtro 2

Nota: No código acima, Folha 3 é o nome da planilha com filtro automático que você usa, altere-o de acordo com sua necessidade.

3. Em seguida, salve e feche essa janela de código, agora, quando você alterar os dados filtrados, o filtros a função será atualizada automaticamente de uma vez, veja a captura de tela:

doc auot atualizar filtro 3


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-2021 e 365. Suporta todos os idiomas. Fácil implantação em sua empresa ou organização. Recursos completos de avaliação gratuita de 30 dias. 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)
Avaliado 5 fora do 5 · classificações 1
Este comentário foi feito pelo moderador no site
Olá, como posso usar tudo isso no google finance? Tks
Este comentário foi feito pelo moderador no site
Legal.. realmente preciso
Este comentário foi feito pelo moderador no site
Eu quero uma alteração em uma planilha para fazer com que várias outras planilhas sejam filtradas automaticamente, como faço para alterar esse código? Ex: SheetA é alterada, o que faz com que Sheet1, Sheet2 e Sheet3 apliquem seu autofiltro. Obrigado!
Este comentário foi feito pelo moderador no site
Estou fazendo isso para uma frente na folha onde a célula está definida como =sheet1!E6. Ele não aplicará o filtro quando for alterado. Se eu mudar o número no verso, ele ajusta a frente, mas não filtra. Se ajustar a fórmula para filtrá-la, ela será reaplicada. O que eu posso fazer?
Este comentário foi feito pelo moderador no site
Utilize este
Private Sub Work_Change (ByVal Target As Range)
Activesheet.AutoFilter.ApplyFilter
End Sub
Este comentário foi feito pelo moderador no site
Eu não posso fazer isso funcionar para mim em tudo. Estou tentando tirar de uma folha mestra e fazer com que apenas os trabalhos que se aplicam a determinados gerentes de projeto em cada guia estejam com seus nomes. Eu também quero que ele seja atualizado automaticamente quando eu fizer alterações.
Este comentário foi feito pelo moderador no site
este comando tudo falso não faz nada. totalmente tentar, mas sem uso de.
Este comentário foi feito pelo moderador no site
Funciona muito bem e me poupa muito tempo e bagunça.. Ótima dica.. Muito obrigado pela ajuda
Este comentário foi feito pelo moderador no site
Esta solução funciona perfeitamente. Obrigado por escrevê-lo! Se alguém está tendo problemas, há algumas coisas a considerar.

Primeiro, o evento Worksheet_Change é chamado folha por folha. Isso significa que, se você tiver várias planilhas com filtros que precisa ser atualizados, precisará responder a todos esses eventos. Uma sub-rotina Worksheet_Change para cada planilha, não uma sub-rotina para a pasta de trabalho inteira (uma exceção - veja a nota abaixo).

Segundo, e na sequência do primeiro, o código deve ser colocado no módulo de código específico da planilha a ser monitorada. É fácil (inadvertidamente) alternar os módulos de código quando você entra no editor VB, portanto, deve-se tomar cuidado para colocá-lo específico na planilha que você deseja monitorar para alterações de dados.

Terceiro, isso não está confirmado, mas possivelmente é um ponto de erro. O exemplo usa nomes de planilhas como "Sheet1", "Sheet2", etc. Se você renomeou as planilhas, talvez seja necessário atualizar o código. Observe que no exemplo, Sheet7 recebeu o nome "dfdf". Se você quisesse atualizar o filtro lá, precisaria usar;
Sheets("dfdf").AutoFilter.ApplyFilter
não;
Sheets("Sheet7").AutoFilter.ApplyFilter

Pode ser bom atualizar o artigo incluindo um exemplo com uma planilha renomeada.


Por fim, se você quiser monitorar uma planilha para alterações de dados, mas atualizar filtros em várias planilhas, precisará apenas de uma sub-rotina, colocada no módulo de código da planilha que está monitorando. O código ficará mais ou menos assim;

# (o código deve ser colocado na planilha para ser monitorado quanto a alterações de dados)
Private Sub Worksheet_Change (ByVal Target As Range)
Sheets("Sheet1").AutoFilter.ApplyFilter
Sheets("Sheet2").AutoFilter.ApplyFilter
Sheets("Sheet3").AutoFilter.ApplyFilter
Sheets("Sheet4").AutoFilter.ApplyFilter
End Sub
Este comentário foi feito pelo moderador no site
Olá Mike,
Obrigado pela sua explicação detalhada.
Este comentário foi feito pelo moderador no site
Ótima explicação, obrigado.

Mas como eu aciono Sheets("Sheet3").AutoFilter.ApplyFilter quando uma nova planilha é criada?
Como não consigo escrever o código que você mencionou em uma planilha que ainda não existe
Este comentário foi feito pelo moderador no site
Ótimo, muito obrigado!
Este comentário foi feito pelo moderador no site
funciona como um campeão, e tão simples. Muito obrigado!
Este comentário foi feito pelo moderador no site
Isso parece ótimo. Você pode me dizer como fazer o mesmo para Sort, em vez de Filter, por favor?
Este comentário foi feito pelo moderador no site
Olá Chris,
Pode ser, o seguinte artigo pode resolver seu problema, por favor veja:

https://www.extendoffice.com/documents/excel/2592-excel-auto-sort-by-value.html

Por favor tente!
Este comentário foi feito pelo moderador no site
Oi, isso funciona muito bem, porém apenas ao alterar manualmente os dados na tabela.

Eu tenho uma tabela filtrada estilo 'top ten/leader board' que é preenchida a partir da entrada de dados em uma planilha separada (na verdade, os dados passam por 3 planilhas antes de chegar à tabela). Quando os dados são alterados na planilha de entrada de dados, os números da tabela de classificação são atualizados, mas o filtro não é atualizado automaticamente.
Alguma ideia de como fazer isto?
Muito grato.
Alex
Este comentário foi feito pelo moderador no site
Eu tenho ela mesmo problema. Alguém pode nos ajudar?
Este comentário foi feito pelo moderador no site
Estou tendo o mesmo problema. Estou tentando filtrar automaticamente a planilha 2 que contém dados provenientes da planilha 1. só funciona se eu alterar os dados na planilha 2, não na planilha 1.
Alguma opinião sobre por que isso não está funcionando e como corrigi-lo?
Este comentário foi feito pelo moderador no site
Oi, isso parece funcionar muito bem, mas estou tendo problemas quando há mais de um filtro na mesma planilha (guia). Converti o intervalo de células em uma tabela para permitir filtros separados e múltiplos dentro da mesma planilha. Este exemplo só aparece para atualizar uma das tabelas/filtros. Alguma sugestão de como atualizar TODAS as tabelas/filtros em uma planilha?

Muito obrigado,

Tom
Este comentário foi feito pelo moderador no site
Olá Tom,
O código neste artigo funciona bem para várias tabelas dentro de uma planilha, você só precisa pressionar a tecla Enter após alterar os dados em vez de clicar em outra célula.
Por favor tente.
Este comentário foi feito pelo moderador no site
terima Kasih

sangat membantu
Este comentário foi feito pelo moderador no site
Isso não funciona com filtro baseado na seleção de lista https://www.extendoffice.com/documents/excel/4113-excel-filter-based-on-list-selection.html
Este comentário foi feito pelo moderador no site
Brilhante e simples de fazer. Muito obrigado!
Este comentário foi feito pelo moderador no site
Oi,

Este código funciona muito bem, muito obrigado.

Eu, no entanto, tenho um pequeno problema com isso - se eu alterar valores em qualquer célula que não faça parte da tabela, recebo um erro de tempo de execução dizendo:

"Erro em tempo de execução '91':

Variável de objeto ou Com variável de bloco não configurada"


Eu tenho opções para Depurar ou Finalizar, a opção Continuar está esmaecida. Eu posso clicar em "End" e o código ainda funciona, mas é muito chato ter que lidar com essa janela pop-up após cada alteração.

Alguém tem experiência semelhante ou uma sugestão sobre como classificar isso?

Obrigado!
Este comentário foi feito pelo moderador no site
Olá, David,
Para resolver seu problema, você pode aplicar o seguinte código:

Private Sub Worksheet_Change (ByVal Target As Range)
On Error Resume Next
Sheets("Sheet3").AutoFilter.ApplyFilter
End Sub

Por favor, tente, espero que possa ajudá-lo!
Este comentário foi feito pelo moderador no site
Olá Skyyang,


Eu implementei sua solução e ela realmente foi corrigida.

Muito obrigado!
Este comentário foi feito pelo moderador no site
Olá tive o mesmo problema, colei o novo código e mudei o nome da planilha mas depois não acontece nada, o filtro não atualiza
Este comentário foi feito pelo moderador no site
mesmo problema aqui também, alguma solução atualizada?
Este comentário foi feito pelo moderador no site
Não consigo fazer isso funcionar no office 365
alguma sugestão
Este comentário foi feito pelo moderador no site
Olá, muito obrigado pela ajuda. Algo não está funcionando bem para mim. Aqui está a história.

Sheet1 tem dados variáveis. Sheet3 tem dados estáticos e filtro. Critérios de filtro em "Planilha3" vem de Sheet1. Sheet1 tem dados provenientes de resultados filtrados em Sheet3.

Sheet3 tem o código:

Sub Worksheet_SelectionChange particular (destino ByVal como intervalo)
Range("A1:U14").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("A22:U23"), CopyToRange:=Range("A25:U26"), Unique:=False
End Sub

Funciona muito bem se eu fizer qualquer coisa no Sheet3. Sem problemas. Obrigada!

No começo eu tinha código na Sheet1:

Private Sub Worksheet_Change (ByVal Target As Range)
Sheets("Sheet3").AutoFilter.ApplyFilter
End Sub

O que resultou no erro "Erro de tempo de execução 91, variável de objeto ou com bloco não definido".

Eu mudei o código com base nos comentários para ser:

Private Sub Worksheet_Change (ByVal Target As Range)
On Error Resume Next
Sheets("Sheet3").AutoFilter.ApplyFilter
End Sub

Agora não recebo um erro, mas os dados na Plan3 e, portanto, na Plan1 não mudam. Em outras palavras, o evento de aplicar o filtro na Plan3 não ocorre quando faço uma alteração na Plan1. Não importa se eu bater ou clique em outra célula após alterar a célula de critérios de filtro Sheet3 que está definida em Sheet1.

Como um aparte, espero que, se eu quisesse ter várias células na Planilha1 que causassem filtros nas Planilhas 4 e 5 além da Planilha3, eu precisaria do código na Planilha 1 para ler:

Private Sub Worksheet_Change (ByVal Target As Range)
On Error Resume Next
Sheets("Sheet3").AutoFilter.ApplyFilter
Sheets("Sheet4").AutoFilter.ApplyFilter
Sheets("Sheet5").AutoFilter.ApplyFilter
End Sub

Thanks again.
Este comentário foi feito pelo moderador no site
Oi,

Este é um grande pedaço de código obrigado. O único problema que estou tendo é que estou usando um menu suspenso em uma folha de gráfico separada. Se eu alterar manualmente o valor na célula associada ao menu suspenso, ele funcionará. Mas quando tento usar apenas o menu suspenso, ele não atualiza. Alguma ideia?
Este comentário foi feito pelo moderador no site
Na verdade, tenho dados de outro arquivo do Excel que foi importado em uma planilha do Excel com o nome "Banco de dados". Em seguida, importo esses dados no mesmo arquivo do Excel, mas em outra planilha ExcelSheet "Visão geral". Eu quero quando os dados mudarem na fonte original, que o filtro se aplique na planilha "Visão Geral". Desde já agradeço a quem puder me ajudar :). PS não pode usar VBA na primeira planilha do Excel
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

Siga-nos

Copyright © 2009 - www.extendoffice.com. | Todos os direitos reservados. Distribuído por ExtendOffice. | | | Mapa do site
Microsoft e o logotipo do Office são marcas comerciais ou marcas registradas da Microsoft Corporation nos Estados Unidos e / ou em outros países.
Protegido por Sectigo SSL