Funzione FILTRO di Excel - filtraggio dinamico con formule

  • Condividi Questo
Michael Brown

In questa rapida lezione imparerete a filtrare in Excel in modo dinamico con le formule. Esempi per filtrare i duplicati, le celle contenenti un determinato testo, con criteri multipli e altro ancora.

Come si filtra di solito in Excel? Nella maggior parte dei casi con il Filtro automatico e, in scenari più complessi, con il Filtro avanzato. Pur essendo veloci e potenti, questi metodi hanno uno svantaggio significativo: non si aggiornano automaticamente quando i dati cambiano, il che significa che si deve ripulire e filtrare di nuovo. L'introduzione della funzione FILTRO in Excel 365 diventa un'alternativa a lungo attesa aA differenza di queste, le formule di Excel vengono ricalcolate automaticamente ad ogni modifica del foglio di lavoro, quindi dovrete impostare il vostro filtro solo una volta!

    Funzione FILTRO di Excel

    La funzione FILTRO di Excel viene utilizzata per filtrare un intervallo di dati in base ai criteri specificati dall'utente.

    La funzione appartiene alla categoria delle funzioni Array dinamici. Il risultato è una matrice di valori che si riversa automaticamente in un intervallo di celle, a partire dalla cella in cui si inserisce la formula.

    La sintassi della funzione FILTRO è la seguente:

    FILTER(array, include, [if_empty])

    Dove:

    • Array (obbligatorio) - l'intervallo o la matrice di valori che si desidera filtrare.
    • Includere (obbligatorio) - i criteri forniti come array booleano (valori TRUE e FALSE).

      L'altezza (quando i dati sono in colonne) o la larghezza (quando i dati sono in righe) deve essere uguale a quella dell'oggetto array argomento.

    • Se_vuoto (opzionale) - il valore da restituire quando nessuna voce soddisfa i criteri.

    La funzione FILTRO è disponibile solo in Excel per Microsoft 365 e Excel 2021. In Excel 2019, Excel 2016 e versioni precedenti non è supportata.

    Formula di base di Excel FILTRO

    Per cominciare, analizziamo un paio di casi molto semplici per capire meglio come funziona una formula di Excel per filtrare i dati.

    Dal set di dati sottostante, supponiamo di voler estrarre i record con un valore specifico nel campo Gruppo , colonna, ad esempio il gruppo C. Per farlo, forniamo l'espressione B2:B13="C" al programma includere che produrrà un array booleano richiesto, con TRUE corrispondente ai valori "C".

    =FILTRO(A2:C13, B2:B13="C", "Nessun risultato")

    In pratica, è più comodo inserire i criteri in una cella separata, ad esempio F1, e utilizzare un riferimento di cella invece di codificare il valore direttamente nella formula:

    =FILTRO(A2:C13, B2:B13=F1, "Nessun risultato")

    A differenza della funzione Filtro di Excel, la funzione non apporta alcuna modifica ai dati originali, ma estrae i record filtrati nel cosiddetto intervallo di fuoriuscita (E4:G7 nell'immagine sottostante), a partire dalla cella in cui viene inserita la formula:

    Se nessun record corrisponde ai criteri specificati, la formula restituisce il valore inserito nel campo if_empty in questo esempio, "Nessun risultato":

    Se preferite non restituire nulla in questo caso, fornire una stringa vuota ("") come ultimo argomento:

    =FILTRO(A2:C13, B2:B13=F1, "")

    Nel caso in cui i dati siano organizzati orizzontalmente da sinistra a destra, come mostrato nella schermata sottostante, anche la funzione FILTRO funzionerà bene. Assicuratevi solo di definire gli intervalli appropriati per i parametri array e includere in modo che l'array sorgente e l'array booleano abbiano la stessa larghezza:

    =FILTRO(B2:M4, B3:M3= B7, "Nessun risultato")

    Funzione FILTRO di Excel - Note d'uso

    Per filtrare efficacemente in Excel con le formule, ecco un paio di punti importanti da tenere in considerazione:

    • La funzione FILTRO distribuisce automaticamente i risultati in verticale o in orizzontale nel foglio di lavoro, a seconda di come sono organizzati i dati originali. Assicuratevi quindi di avere sempre un numero sufficiente di celle vuote in basso e a destra, altrimenti otterrete un errore #SPILL.
    • I risultati della funzione FILTRO di Excel sono dinamici, cioè si aggiornano automaticamente quando i valori del set di dati originale cambiano. Tuttavia, l'intervallo fornito per il parametro array non viene aggiornato quando vengono aggiunte nuove voci ai dati di origine. Se si desidera che l'argomento array per ridimensionarlo automaticamente, quindi convertirlo in una tabella di Excel e costruire formule con riferimenti strutturati, oppure creare un intervallo dinamico con nome.

    Come filtrare in Excel - esempi di formule

    Ora che sapete come funziona una formula di filtro di base in Excel, è il momento di capire come estenderla per risolvere compiti più complessi.

    Filtro con più criteri (logica AND)

    Per filtrare i dati con più criteri, si forniscono due o più espressioni logiche per il parametro includere argomento:

    FILTRO(array, ( gamma1 = criteri1 ) * ( gamma2 = criteri2 ), "Nessun risultato")

    L'operazione di moltiplicazione elabora le matrici con il parametro Logica AND assicurando che solo i record che soddisfano tutti i criteri Tecnicamente, funziona così:

    Il risultato di ogni espressione logica è una matrice di valori booleani, dove VERO equivale a 1 e FALSO a 0. Quindi, gli elementi di tutte le matrici nelle stesse posizioni vengono moltiplicati. Poiché la moltiplicazione per zero dà sempre zero, solo gli elementi per i quali tutti i criteri sono VERI entrano nella matrice risultante e, di conseguenza, solo questi elementi vengono estratti.

    Gli esempi seguenti mostrano questa formula generica in azione.

    Esempio 1. Filtrare più colonne in Excel

    Estendendo ulteriormente la formula FILTRO di Excel, filtriamo i dati in base a due colonne: Gruppo (colonna B) e Vittorie (colonna C).

    A tal fine, impostiamo i seguenti criteri: digitiamo il nome del gruppo target in F2 ( criteri1 ) e il numero minimo richiesto di vittorie in F3 ( criteri2 ).

    Dato che i nostri dati di partenza sono in A2:C13 ( array ), i gruppi sono in B2:B13 ( gamma1 ) e le vittorie sono in C2:C13 ( gamma2 ), la formula assume questa forma:

    =FILTRO(A2:C13, (B2:B13=F2) * (C2:C13>=F3), "Nessun risultato")

    Il risultato è un elenco di giocatori del gruppo A che hanno ottenuto 2 o più vittorie:

    Esempio 2. Filtrare i dati tra le date

    Innanzitutto, va notato che non è possibile creare una formula generica per filtrare per data in Excel. In situazioni diverse, sarà necessario costruire i criteri in modo diverso, a seconda che si voglia filtrare per una data specifica, per mese o per anno. Lo scopo di questo esempio è dimostrare l'approccio generale.

    Ai nostri dati di esempio, aggiungiamo un'altra colonna contenente le date dell'ultima vincita (colonna D). E ora, estrarremo le vincite che si sono verificate in un periodo specifico, ad esempio tra il 17 e il 31 maggio.

    Si noti che in questo caso entrambi i criteri si applicano allo stesso intervallo:

    =FILTRO(A2:D13, (D2:D13>=G2) * (D2:D13<=G3), "Nessun risultato")

    Dove G2 e G3 sono le date da filtrare.

    Filtro con più criteri (logica OR)

    Per estrarre i dati in base a una condizione OR multipla, si utilizzano anche espressioni logiche come quelle mostrate negli esempi precedenti, ma invece di moltiplicarle, si sommano. Quando gli array booleani restituiti dalle espressioni vengono sommati, l'array risultante avrà 0 per le voci che non soddisfano alcun criterio (cioè tutti i criteri sono FALSI) e tali voci saranno filtrate. Le voci per le quali aalmeno un criterio è VERO verrà estratto.

    Ecco la formula generica per filtrare le colonne con la logica OR:

    FILTRO(array, ( gamma1 = criteri1 ) + ( gamma2 = criteri2 ), "Nessun risultato")

    Come esempio, estraiamo una lista di giocatori che hanno questo o quello numero di vittorie.

    Supponendo che i dati di origine siano in A2:C13, che le vittorie siano in C2:C13 e che i numeri di vittoria di interesse siano in F2 e F3, la formula sarebbe la seguente:

    =FILTRO(A2:C13, (C2:C13=F2) + (C2:C13=F3), "Nessun risultato")

    Come risultato, si sa quali giocatori hanno vinto tutte le partite (4) e quali non ne hanno vinta nessuna (0):

    Filtro basato su più criteri AND e OR

    Quando è necessario applicare entrambi i tipi di criteri, ricordate questa semplice regola: unite i criteri AND con l'asterisco (*) e i criteri OR con il segno più (+).

    Ad esempio, per restituire un elenco di giocatori che hanno un determinato numero di vittorie (F2) E appartengono al gruppo menzionato in E2 O E3, costruire la seguente catena di espressioni logiche:

    =FILTRO(A2:C13, (C2:C13=F2) * ((B2:B13=E2) + (B2:B13=E3)), "Nessun risultato")

    Si otterrà il seguente risultato:

    Come filtrare i duplicati in Excel

    Quando si lavora con fogli di lavoro enormi o si combinano dati provenienti da fonti diverse, è spesso possibile che si verifichino dei duplicati.

    Se state cercando di filtrare duplicati ed estrarre gli elementi unici, quindi utilizzare la funzione UNIQUE come spiegato nel tutorial collegato.

    Se il vostro obiettivo è quello di filtrare i duplicati , cioè estrarre le voci che ricorrono più di una volta, quindi utilizzare la funzione FILTRO insieme a COUNTIFS.

    L'idea è quella di ottenere il conteggio delle occorrenze per tutti i record e di estrarre quelli maggiori di 1. Per ottenere i conteggi, si fornisce lo stesso intervallo per ciascun record intervallo_di_criteri / criteri a coppia di COUNTIFS piace questo elemento:

    FILTRO( array , COUNTIFS( colonna1 , colonna1, colonna2 , colonna2 )>1, "Nessun risultato")

    Ad esempio, per filtrare le righe duplicate dai dati in A2:C20 in base ai valori di tutte e tre le colonne, ecco la formula da utilizzare:

    =FILTRO(A2:C20, COUNTIFS(A2:A20, A2:A20, B2:B20, B2:B20, C2:C20, C2:C20)>1, "Nessun risultato")

    Suggerimento: per filtrare i duplicati in base ai valori del campo colonne chiave includere solo quelle colonne specifiche nella funzione COUNTIFS.

    Come filtrare gli spazi vuoti in Excel

    Una formula per filtrare le celle vuote è, di fatto, una variante della formula FILTRO di Excel con criteri multipli AND. In questo caso, controlliamo se tutte (o alcune) le colonne contengono dati ed escludiamo le righe in cui almeno una cella è vuota. Per identificare le celle non vuote, si utilizza l'operatore "non uguale a" () insieme a una stringa vuota ("") come in questo caso:

    FILTRO(array, ( colonna1 "") * ( colonna2 =""), "Nessun risultato")

    Con i dati di origine in A2:C12, per filtrare le righe contenenti una o più celle vuote, si inserisce la seguente formula in E3:

    Filtrare le celle contenenti testo specifico

    Per estrarre le celle che contengono un determinato testo, è possibile utilizzare la funzione FILTRO insieme alla classica formula Se la cella contiene:

    FILTRO(array, ISNUMBER(SEARCH(" testo ", gamma )), "Nessun risultato")

    Ecco come funziona:

    • La funzione CERCA cerca una stringa di testo specificata in un determinato intervallo e restituisce un numero (la posizione del primo carattere) o un errore #VALORE! (testo non trovato).
    • La funzione ISNUMBER converte tutti i numeri in TRUE e gli errori in FALSE e passa l'array booleano risultante alla funzione includere della funzione FILTER.

    Per questo esempio, abbiamo aggiunto l'opzione Cognomi dei giocatori in B2:B13, digitate la parte del nome che desideriamo trovare in G2, quindi utilizzate la seguente formula per filtrare i dati:

    =FILTRO(A2:D13, ISNUMBER(SEARCH(G2, B2:B13)), "Nessun risultato")

    Come risultato, la formula recupera i due cognomi contenenti "han":

    Filtro e calcolo (somma, media, minimo, massimo, ecc.)

    Un aspetto interessante della funzione FILTRO di Excel è che può non solo estrarre i valori con le condizioni, ma anche riassumere i dati filtrati. A questo scopo, combinate FILTRO con funzioni di aggregazione come SOMMA, MEDIA, CONTO, MAX o MIN.

    Ad esempio, per aggregare i dati di un gruppo specifico in F1, utilizzare le seguenti formule:

    Totale vittorie:

    =SOMMA(FILTRO(C2:C13, B2:B13=F1, 0))

    Media delle vittorie:

    =MEDIA(FILTRO(C2:C13, B2:B13=F1, 0))

    Vittorie massime:

    =MAX(FILTRO(C2:C13, B2:B13=F1, 0))

    Vittorie minime:

    =MIN(FILTRO(C2:C13, B2:B13=F1, 0))

    Si prega di prestare attenzione al fatto che, in tutte le formule, si utilizza lo zero per il valore di if_empty quindi le formule restituiscono 0 se non vengono trovati valori che soddisfano i criteri. Fornendo un testo come "Nessun risultato" si otterrebbe un errore #VALUE, che è ovviamente l'ultima cosa che si vuole :)

    Formula FILTRO sensibile alle maiuscole

    Una formula FILTRO standard di Excel è insensibile alle maiuscole e alle minuscole, cioè non fa distinzione tra caratteri minuscoli e maiuscoli. Per distinguere le maiuscole e le minuscole del testo, annidare la funzione ESATTO nella cartella includere Questo costringerà FILTER a eseguire i test logici in modo sensibile alle maiuscole e alle minuscole:

    FILTRO(array, EXACT( gamma , criteri ), "Nessun risultato")

    Supponiamo di avere entrambi i gruppi A e a e desiderate estrarre i record in cui il gruppo è la "a" minuscola. Per farlo, utilizzate la formula seguente, dove A2:C13 sono i dati di origine e B2:B13 sono i gruppi da filtrare:

    =FILTRO(A2:C13, EXACT(B2:B13, "a"), "Nessun risultato")

    Come al solito, è possibile inserire il gruppo di destinazione in una cella predefinita, ad esempio F1, e utilizzare il riferimento a tale cella invece del testo codificato:

    =FILTRO(A2:C13, EXACT(B2:B13, F1), "Nessun risultato")

    Come FILTRARE i dati e restituire solo colonne specifiche

    Nella maggior parte dei casi, filtrare tutte le colonne con un'unica formula è ciò che gli utenti di Excel desiderano, ma se la tabella di origine contiene decine o addirittura centinaia di colonne, si può certamente desiderare di limitare i risultati ad alcune delle più importanti.

    Esempio 1. Filtrare alcune colonne adiacenti

    Quando si desidera che alcune colonne vicine appaiano nel risultato di un FILTRO, includere solo quelle colonne in array perché è questo argomento che determina quali colonne restituire.

    Nell'esempio della formula FILTRO di base, supponendo di voler restituire le prime 2 colonne ( Nome e Gruppo ). Quindi, si fornisce A2:B13 per l'opzione array argomento:

    =FILTRO(A2:B13, B2:B13=F1, "Nessun risultato")

    Come risultato, si ottiene un elenco di partecipanti al gruppo target definito in F1:

    Esempio 2. Filtrare le colonne non adiacenti

    Per fare in modo che la funzione FILTRO restituisca colonne non contigue, utilizzate questo trucco intelligente:

    1. Creare una formula FILTRO con le condizioni desiderate utilizzando l'intera tabella per array .
    2. Nestate la formula precedente all'interno di un'altra funzione FILTRO. Per configurare la funzione "wrapper", utilizzate una costante di array di valori VERO e FALSO o di 1 e 0 per il parametro includere dove TRUE (1) indica le colonne da mantenere e FALSE (0) quelle da escludere.

    Ad esempio, per restituire solo Nomi (1a colonna) e Vittorie (3a colonna), utilizziamo {1,0,1} o {TRUE,FALSE,TRUE} per i valori di includere della funzione esterna FILTER:

    =FILTRO(FILTRO(A2:C13, B2:B13=F1), {1,0,1})

    Oppure

    =FILTRO(FILTRO(A2:C13, B2:B13=F1), {VERO,FALSO,VERO})

    Come limitare il numero di righe restituite dalla funzione FILTRO

    Se la formula FILTRO trova molti risultati, ma il foglio di lavoro ha uno spazio limitato e non è possibile eliminare i dati sottostanti, è possibile limitare il numero di righe restituite dalla funzione FILTRO.

    Vediamo come funziona su un esempio di una formula semplice che estrae i giocatori del gruppo target in F1:

    =FILTRO(A2:C13, B2:B13=F1)

    La formula precedente visualizza tutti i record trovati, nel nostro caso 4 righe, ma supponiamo di avere spazio solo per due. Per visualizzare solo le prime due righe trovate, è necessario procedere in questo modo:

    • Inserite la formula FILTRO nel campo array della funzione INDEX.
    • Per il numero_riga di INDEX, utilizzare una costante di matrice verticale come {1;2}, che determina il numero di righe da restituire (2 nel nostro caso).
    • Per il numero_colonna utilizzare una costante di matrice orizzontale come {1,2,3}, che specifica quali colonne restituire (le prime 3 colonne in questo esempio).
    • Per gestire eventuali errori quando non vengono trovati dati corrispondenti ai criteri, è possibile racchiudere la formula nella funzione IFERROR.

    La formula completa ha questa forma:

    =IFERROR(INDEX(FILTER(A2:C13, B2:B13=F1), {1;2}, {1,2,3}), "Nessun risultato")

    Quando si lavora con tabelle di grandi dimensioni, scrivere manualmente le costanti degli array può essere piuttosto complicato: la funzione SEQUENZA può generare automaticamente i numeri sequenziali:

    =IFERROR(INDICE(FILTRO(A2:C13, B2:B13=F1), SEQUENZA(2), SEQUENZA(1, COLONNE(A2:C13)), "Nessun risultato")

    La prima SEQUENZA genera una matrice verticale contenente il numero di numeri sequenziali specificato nel primo (e unico) argomento. La seconda SEQUENZA utilizza la funzione COLONNE per contare il numero di colonne del dataset e produce una matrice orizzontale equivalente.

    Suggerimento: per restituire i dati da colonne specifiche e non tutte le colonne, nella costante dell'array orizzontale che si utilizza per il numero_colonna di INDEX, includere solo quei numeri specifici. Ad esempio, per estrarre i dati dalla prima e dalla terza colonna, utilizzare {1,3}.

    La funzione FILTRO di Excel non funziona

    Quando la formula FILTRO di Excel dà luogo a un errore, molto probabilmente si tratta di uno dei seguenti:

    Errore #CALC!

    Si verifica se l'opzione if_empty viene omesso e non vengono trovati risultati che soddisfino i criteri. Il motivo è che attualmente Excel non supporta gli array vuoti. Per evitare errori di questo tipo, assicurarsi di definire sempre l'opzione if_empty nelle formule.

    Errore #VALORE

    Si verifica quando l'elemento array e includere hanno dimensioni incompatibili.

    #N/A, #VALORE, ecc.

    Possono verificarsi errori diversi se un valore del parametro includere è un errore o non può essere convertito in un valore booleano.

    #Nome errore

    Si verifica quando si cerca di utilizzare FILTRO in una versione precedente di Excel. Ricordate che si tratta di una nuova funzione, disponibile solo in Office 365 e in Excel 2021.

    Nel nuovo Excel, si verifica un errore #NAME se per sbaglio si sbaglia il nome della funzione.

    #Errore di SPILL

    Il più delle volte, questo errore si verifica se una o più celle dell'intervallo di versamento non sono completamente vuote. Per risolvere il problema, è sufficiente cancellare o eliminare le celle non vuote. Per indagare e risolvere altri casi, consultare l'errore #SPILL! in Excel: cosa significa e come risolvere.

    errore #REF!

    Si verifica quando una formula FILTRO viene utilizzata tra diverse cartelle di lavoro e la cartella di lavoro di origine viene chiusa.

    Ecco come archiviare i dati in Excel in modo dinamico. Vi ringrazio per la lettura e spero di vedervi sul nostro blog la prossima settimana!

    Scarica il libro di esercizi

    Filtro in Excel con formule (file .xlsx)

    Michael Brown è un appassionato di tecnologia dedicato con una passione per la semplificazione di processi complessi utilizzando strumenti software. Con oltre un decennio di esperienza nel settore tecnologico, ha affinato le sue competenze in Microsoft Excel e Outlook, nonché in Fogli Google e Documenti. Il blog di Michael è dedicato alla condivisione delle sue conoscenze e competenze con gli altri, fornendo suggerimenti e tutorial facili da seguire per migliorare la produttività e l'efficienza. Che tu sia un professionista esperto o un principiante, il blog di Michael offre spunti preziosi e consigli pratici per ottenere il massimo da questi strumenti software essenziali.