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

Come riapplicare automaticamente il filtro automatico quando i dati cambiano in Excel?

In Excel, quando si applica l'estensione Filtro funzione per filtrare i dati, il risultato del filtro non verrà modificato automaticamente con le modifiche dei dati nei dati filtrati. Ad esempio, quando filtro tutte le mele dai dati, ora cambio uno dei dati filtrati in BBBBBB, ma il risultato non verrà modificato come mostrato nella seguente schermata. In questo articolo, parlerò di come riapplicare automaticamente il filtro automatico quando i dati cambiano in Excel.

doc auot aggiorna filtro 1

Riapplica automaticamente il filtro automatico quando i dati cambiano con il codice VBA


freccia blu freccia destra Riapplica automaticamente il filtro automatico quando i dati cambiano con il codice VBA

Normalmente, puoi aggiornare i dati del filtro facendo clic sulla funzione Riapplica manualmente, ma, qui, introdurrò un codice VBA per aggiornare automaticamente i dati del filtro quando i dati cambiano, per favore fai come segue:

1. Vai al foglio di lavoro in cui desideri aggiornare automaticamente il filtro quando i dati cambiano.

2. Fare clic con il pulsante destro del mouse sulla scheda del foglio e selezionare Visualizza codice dal menu contestuale, nel saltato fuori Microsoft Visual Basic, Applications Edition finestra, copia e incolla il seguente codice nella finestra del modulo vuota, vedi screenshot:

Codice VBA: riapplica automaticamente il filtro quando i dati cambiano:

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

doc auot aggiorna filtro 2

Note:: Nel codice sopra, Foglio 3 è il nome del foglio con il filtro automatico che utilizzi, modificalo secondo le tue necessità.

3. Quindi salva e chiudi questa finestra del codice, ora, quando modifichi i dati filtrati, il file Filtro la funzione verrà aggiornata automaticamente in una volta, vedi screenshot:

doc auot aggiorna filtro 3


I migliori strumenti per la produttività in ufficio

Kutools per Excel risolve la maggior parte dei tuoi problemi e aumenta la tua produttività dell'80%

  • Riutilizzo: Inserisci rapidamente formule complesse, grafici e tutto ciò che hai usato prima; Crittografa celle con password; Crea mailing list e invia email ...
  • Bar Super Formula (modifica facilmente più righe di testo e formula); Layout di lettura (leggi e modifica facilmente un gran numero di celle); Incolla su intervallo filtrato...
  • Unisci celle / righe / colonne senza perdere dati; Contenuto delle celle divise; Combina righe / colonne duplicate... Impedisci celle duplicate; Confronta intervalli...
  • Seleziona Duplica o Unico Righe; Seleziona Righe vuote (tutte le celle sono vuote); Super Find e Fuzzy Find in molte cartelle di lavoro; Selezione casuale ...
  • Copia esatta Più celle senza modificare il riferimento della formula; Riferimenti di creazione automatica a più fogli; Inserisci punti elenco, Caselle di controllo e altro ...
  • Estrai testo, Aggiungi testo, Rimuovi per posizione, Rimuovi spazio; Creare e stampare totali parziali di paging; Converti contenuto e commenti tra celle...
  • Super filtro (salva e applica schemi di filtri ad altri fogli); Ordinamento avanzato per mese / settimana / giorno, frequenza e altro; Filtro speciale in grassetto, corsivo ...
  • Combina cartelle di lavoro e fogli di lavoro; Unisci tabelle in base a colonne chiave; Suddividi i dati in più fogli; Conversione in batch xls, xlsx e PDF...
  • Più di 300 potenti funzionalità. Supporta Office/Excel 2007-2021 e 365. Supporta tutte le lingue. Facile implementazione nella tua azienda o organizzazione. Funzionalità complete Prova gratuita di 30 giorni. Garanzia di rimborso di 60 giorni.
scheda kte 201905

Scheda Office porta l'interfaccia a schede a Office e semplifica notevolmente il lavoro

  • Abilita la modifica e la lettura a schede in Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Apri e crea più documenti in nuove schede della stessa finestra, piuttosto che in nuove finestre.
  • Aumenta la produttività del 50% e riduce ogni giorno centinaia di clic del mouse!
fondo officetab
Commenti (36)
Rinomato 5 su 5 · Valutazioni 1
Questo commento è stato fatto dal moderatore sul sito
ciao, come posso usare tutto questo in google finance? Grazie
Questo commento è stato fatto dal moderatore sul sito
Bello.. ne ho davvero bisogno
Questo commento è stato fatto dal moderatore sul sito
Voglio che una modifica su un foglio faccia filtrare automaticamente più altri fogli, come faccio a modificare questo codice? Es: FoglioA viene modificato, il che fa sì che Foglio1, Foglio2 e Foglio3 applichino il filtro automatico. Grazie!
Questo commento è stato fatto dal moderatore sul sito
Lo sto facendo per un foglio in primo piano se la cella è impostata su =sheet1!E6. Non applicherà il filtro quando cambia. Se cambio il numero nel foglio posteriore, si regola davanti ma non filtra. Se si modifica la formula per filtrarne i criteri, si riapplica. Cosa posso fare?
Questo commento è stato fatto dal moderatore sul sito
Utilizzare questa
Private Sub Work_Change (ByVal Target As Range)
Foglio attivo.Filtro automatico.ApplicaFiltro
End Sub
Questo commento è stato fatto dal moderatore sul sito
Non riesco affatto a farlo funzionare per me. Sto cercando di prendere da un foglio principale e fare in modo che prenda solo i lavori che si applicano a determinati project manager su ciascuna scheda che è con i loro nomi. Voglio anche che si aggiorni automaticamente quando apporto le modifiche.
Questo commento è stato fatto dal moderatore sul sito
questo comando tutto falso non fa nulla. totalmente da provare ma non serve.
Questo commento è stato fatto dal moderatore sul sito
Funziona alla grande e mi fa risparmiare un sacco di tempo e scherzare.. Davvero un ottimo consiglio.. Molte grazie per il tuo aiuto
Questo commento è stato fatto dal moderatore sul sito
Questa soluzione funziona perfettamente. Grazie per averlo scritto! Se qualcuno ha problemi, ci sono alcune cose da considerare.

Innanzitutto, l'evento Worksheet_Change viene chiamato foglio per foglio. Ciò significa che se hai più fogli con filtri che devi aggiornare, dovrai rispondere a tutti quegli eventi. Una subroutine Worksheet_Change per ogni foglio di lavoro, non una subroutine per l'intera cartella di lavoro (un'eccezione, vedere la nota di seguito).

In secondo luogo, e in seguito al primo, il codice deve essere inserito nel modulo di codice specifico del foglio di lavoro da monitorare. È facile (inavvertitamente) cambiare i moduli di codice una volta entrati nell'editor VB, quindi è necessario prestare attenzione a posizionarlo in modo specifico sul foglio che si desidera monitorare per le modifiche ai dati.

Terzo, questo non è confermato, ma forse è un punto di errore. L'esempio utilizza i nomi dei fogli di "Foglio1", "Foglio2", ecc. Se hai rinominato i fogli, potrebbe essere necessario aggiornare il codice. Nota nell'esempio, a Sheet7 è stato assegnato il nome "dfdf". Se volessi aggiornare il filtro lì, dovresti usare;
Fogli("dfdf").AutoFilter.ApplyFilter
non;
Fogli("Foglio7").AutoFilter.ApplicaFilter

Potrebbe essere utile aggiornare l'articolo includendo un esempio con un foglio rinominato.


Infine, se si desidera monitorare un foglio per le modifiche ai dati, ma aggiornare i filtri su più fogli, è necessaria solo una subroutine, inserita nel modulo codice del foglio di lavoro che si sta monitorando. Il codice sarà simile a questo;

# (il codice deve essere inserito nel foglio di lavoro per essere monitorato per le modifiche ai dati)
Private Sub Worksheet_Change (ByVal Target As Range)
Fogli("Foglio1").AutoFilter.ApplicaFilter
Fogli("Foglio2").AutoFilter.ApplicaFilter
Fogli("Foglio3").AutoFilter.ApplicaFilter
Fogli("Foglio4").AutoFilter.ApplicaFilter
End Sub
Questo commento è stato fatto dal moderatore sul sito
Ciao, Mike,
Grazie per la tua spiegazione dettagliata.
Questo commento è stato fatto dal moderatore sul sito
Ottima spiegazione, grazie.

Ma come faccio ad attivare Fogli("Foglio3").AutoFilter.ApplyFilter quando viene creato un nuovo foglio?
Dal momento che non posso scrivere il codice che hai menzionato su un foglio che non esiste ancora
Questo commento è stato fatto dal moderatore sul sito
Ottimo grazie!
Questo commento è stato fatto dal moderatore sul sito
funziona come un campione, e così semplice. grazie mille!
Questo commento è stato fatto dal moderatore sul sito
Questo sembra fantastico. Puoi dirmi come fare lo stesso per Ordina, piuttosto che per Filtro, per favore?
Questo commento è stato fatto dal moderatore sul sito
Ciao, Chris,
Può essere, il seguente articolo può risolvere il tuo problema, si prega di visualizzare:

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

Per favore, provalo!
Questo commento è stato fatto dal moderatore sul sito
Ciao, funziona alla grande, tuttavia solo quando si modificano manualmente i dati nella tabella.

Ho una tabella filtrata in stile "top ten/leader board" che viene popolata dall'immissione di dati su un foglio di lavoro separato (in realtà i dati passano attraverso 3 fogli di lavoro prima di arrivare al tavolo). Quando i dati vengono modificati nel foglio di lavoro per l'immissione dei dati, le cifre della tabella della classifica vengono aggiornate, tuttavia il filtro non si aggiorna automaticamente.
Delle idee su come farlo?
Molto riconoscente.
alex
Questo commento è stato fatto dal moderatore sul sito
Ho lo stesso problema di lei. Qualcuno può aiutarci?
Questo commento è stato fatto dal moderatore sul sito
Sto avendo lo stesso problema. Sto provando a filtrare automaticamente il foglio 2 che contiene i dati provenienti dal foglio 1. funziona solo se cambio i dati sul foglio 2, non sul foglio 1.
Qualche idea sul perché questo non funziona e su come risolverlo?
Questo commento è stato fatto dal moderatore sul sito
Ciao, sembra funzionare alla grande ma sto riscontrando problemi quando ci sono più di un filtro sullo stesso foglio di lavoro (scheda). Ho convertito l'intervallo di celle in una tabella per consentire filtri separati e multipli all'interno dello stesso foglio di lavoro. Questo esempio sembra aggiornare solo una delle tabelle/filtri. Qualche suggerimento su come aggiornare TUTTE le tabelle/filtri all'interno di un foglio di lavoro?

Molte grazie,

Tom
Questo commento è stato fatto dal moderatore sul sito
ciao Tom
Il codice in questo articolo funziona bene per più tabelle all'interno di un foglio di lavoro, devi solo premere il tasto Invio dopo aver modificato i dati invece di fare clic su un'altra cella.
Per favore, provalo.
Questo commento è stato fatto dal moderatore sul sito
Terim Kasih

sangat membantu
Questo commento è stato fatto dal moderatore sul sito
Questo non funziona con il filtro basato sulla selezione dell'elenco https://www.extendoffice.com/documents/excel/4113-excel-filter-based-on-list-selection.html
Questo commento è stato fatto dal moderatore sul sito
Brillante e semplice da fare. Grazie mille!
Questo commento è stato fatto dal moderatore sul sito
Ciao,

Questo codice funziona benissimo, grazie mille.

Tuttavia, ho un piccolo problema con esso: se cambio i valori in una cella che non fa parte della tabella, mi viene presentato un errore di runtime che dice:

"Errore di runtime '91':

Variabile oggetto o Con variabile di blocco non impostata"


Ho opzioni per eseguire il debug o terminare, l'opzione per continuare è disattivata. Posso fare clic su "Fine" e il codice funziona ancora, tuttavia è molto fastidioso dover gestire questa finestra popup dopo ogni modifica.

Qualcuno ha un'esperienza simile o un suggerimento su come risolvere questo problema?

Grazie!
Questo commento è stato fatto dal moderatore sul sito
Ciao David,
Per risolvere il tuo problema, puoi applicare il seguente codice:

Private Sub Worksheet_Change (ByVal Target As Range)
On Error Resume Next
Fogli("Foglio3").AutoFilter.ApplicaFilter
End Sub

Per favore, provalo, spero che possa aiutarti!
Questo commento è stato fatto dal moderatore sul sito
Ciao Skyyang,


Ho implementato la tua soluzione ed è effettivamente risolto.

Grazie mille!
Questo commento è stato fatto dal moderatore sul sito
Ciao ho avuto lo stesso problema, ho incollato il nuovo codice e cambiato il nome del foglio ma poi non succede nulla, il filtro non si aggiorna
Questo commento è stato fatto dal moderatore sul sito
stesso problema anche qui, qualche soluzione aggiornata?
Questo commento è stato fatto dal moderatore sul sito
Non riesco a farlo funzionare su Office 365
eventuali suggerimenti
Questo commento è stato fatto dal moderatore sul sito
Ciao, grazie mille per l'aiuto. Qualcosa non funziona per me. Ecco la storia.

Foglio1 ha dati variabili. Sheet3 ha dati statici e filtro. I criteri di filtro su "Foglio3" provengono da Foglio1. Foglio1 contiene dati che provengono da risultati filtrati su Foglio3.

Foglio3 ha il codice:

Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Intervallo("A1:U14").Azione AdvancedFilter:=xlFilterCopy, CriteriaRange:=Range("A22:U23"), CopyToRange:=Range("A25:U26"), Unique:=False
End Sub

Funziona benissimo se faccio qualcosa su Sheet3. Nessun problema. Grazie!

All'inizio avevo il codice su Sheet1:

Private Sub Worksheet_Change (ByVal Target As Range)
Fogli("Foglio3").AutoFilter.ApplicaFilter
End Sub

Che ha provocato l'errore "Errore di runtime 91, variabile oggetto o con blocco non impostato".

Ho cambiato il codice in base ai commenti in modo che fosse:

Private Sub Worksheet_Change (ByVal Target As Range)
On Error Resume Next
Fogli("Foglio3").AutoFilter.ApplicaFilter
End Sub

Ora non ottengo un errore, ma i dati su Sheet3 e quindi Sheet1 non cambiano. In altre parole, l'evento di applicazione del filtro a Sheet3 non si verifica quando si apporta una modifica a Sheet1. Non importa se colpisco oppure fare clic su un'altra cella dopo aver modificato la cella dei criteri di filtro di Sheet3 impostata su Sheet1.

Per inciso, mi aspetto che se volessi avere più celle su Foglio1 che hanno causato filtri sui Fogli 4 e 5 oltre a Foglio3, avrei bisogno del codice sul Foglio 1 per leggere:

Private Sub Worksheet_Change (ByVal Target As Range)
On Error Resume Next
Fogli("Foglio3").AutoFilter.ApplicaFilter
Fogli("Foglio4").AutoFilter.ApplicaFilter
Fogli("Foglio5").AutoFilter.ApplicaFilter
End Sub

Grazie ancora!
Questo commento è stato fatto dal moderatore sul sito
Ciao,

Questo è un ottimo codice, grazie. L'unico problema che sto riscontrando è che sto usando un menu a discesa su un foglio grafico separato. Se cambio manualmente il valore nella cella associata al menu a discesa, funziona. Ma quando provo a usare semplicemente il menu a discesa, non si aggiornerà. qualche idea?
Questo commento è stato fatto dal moderatore sul sito
In realtà ho dati da un altro file Excel che è stato importato in un foglio Excel con il nome "Database". Quindi importo questi dati nello stesso file Excel ma in un altro foglio Excel "Panoramica". Voglio che quando i dati cambiano nella fonte originale, il filtro si applichi nel foglio "Panoramica". Grazie in avanti per chi può aiutarmi :). PS non posso usare VBA nel primo foglio excel
Non ci sono ancora commenti pubblicati qui
Carica Altre
Lasciate i vostri commenti
Pubblicazione come ospite
×
Valuta questo post:
0   Personaggi
Posizioni suggerite

Seguici

Copyright © 2009 - www.extendoffice.com. | Tutti i diritti riservati. Offerto da ExtendOffice, | Mappa del sito
Microsoft e il logo Office sono marchi o marchi registrati di Microsoft Corporation negli Stati Uniti e / o in altri paesi.
Protetto da Sectigo SSL