Filtro avanzato oltre ogni limite: i campi calcolati – tutorial 2/2

Vuoi utilizzare il filtro avanzato oltre ogni limite? 🙂 Bene, in questo articolo vediamo come utilizzare nel modo più “spinto” il filtro avanzato: useremo i campi calcolati!

Nell’articolo dedicato all’utilizzo standard del filtro avanzato abbiamo visto come preparare una tabella dei criteri e come sfruttare i caratteri jolly.

I criteri classici lavorano sulla singola colonna. I criteri o campi calcolati invece ci permettono di valutare più colonne insieme.

I criteri calcolati sono espressioni che noi creiamo e che vengono valutate per ciascuna riga dell’elenco: se l’espressione restituisce VERO allora la riga specifica viene visualizzata, se l’espressione restituisce FALSO la riga viene nascosta.

Impariamo ad usare i criteri calcolati attraverso alcuni esempi.

La tabella di partenza è un elenco di vendite di prodotti da parte di determinati venditori nelle aree nord, centro e sud.

elenco per filtro avanzato

Esempio 1: confrontare il valore di due colonne

Vogliamo estrarre le righe delle vendite in cui il fatturato 2016 è diverso dal fatturato 2015 (le righe che nell’immagine precedente erano colorate di giallo).

La nostra tabella dei criteri avrà un’intestazione “Differenza anno” e un criterio così composto =E8<>F8

Applichiamo il filtro da “Dati” – “Avanzate” e definendo intervallo elenco e intervallo criteri

finestra parametri filtro avanzato

Il risultato è quello desiderato:

esempio filtro valori diversi su due colonne

Da notare che: 1. nel criterio non dobbiamo inserire dollari perché l’espressione deve essere valutata per ogni riga 2. l’intestazione “Differenza anno” potrebbe in realtà essere anche cella vuota, il filtro funzionerebbe ugualmente.

Esempio 2: valori maggiori della MEDIA

Il secondo esempio mostra il criterio che dovremmo scrivere per filtrare solo le righe che presentano un valore di fatturato 2016 maggiore della media del fatturato 2016.

valore maggiore della media

Il nostro criterio è =E8>MEDIA(E$8:E$79)

Il filtro quindi estrae tutti i valori della colonna E il cui valore è superiore al valore della media calcolato sull’intero intervallo del fatturato. I dollari sono indispensabili per ottenere il risultato corretto della media per ogni riga.

Ma questo risultato potrebbe essere ottenuto anche applicando il filtro automatico? Sì è vero. Però è utile saperlo fare con i criteri calcolati del filtro avanzato perché la situazione potrebbe essere più complessa e non risolvibile solamente con il filtro automatico:

valore maggiore della media con più criteri

Tra l’altro quest’ultimo esempio ci mostra che i criteri calcolati possono essere combinati con i criteri standard.

Esempio 3: filtro avanzato e CONTA.SE

Nell’ultimo esempio proviamo a visualizzare solo i venditori che hanno delle vendite per ciascuna delle tre aree e per ciascuno dei quattro prodotti. Un venditore quindi deve essere presente 12 volte per soddisfare la nostra richiesta.

Il criterio è =CONTA.SE(C$8:C$71;C8)=12

Anche in questo caso noi dobbiamo scrivere un’espressione il cui risultato deve restituire VERO o FALSO per ciascuna riga.

conta se con filtro avanzato

Se ti è piaciuto questo articolo iscriviti alla newsletter. Riceverai così periodicamente una mail che ti avviserà rispetto ai nuovi contenuti del blog. 🙂

4 Comments

  1. Salve,
    articolo molto bello, complimenti,
    Volevo sapere se lei conosce il modo di far riapplicare un filtro avanzato al cambio del valore del criterio senza dover riaprire la finestra del filtro avanzato,
    grazie

    Stefano

  2. Ciao Stefano,
    per riapplicare il filtro avanzato senza dover ritornare sulla finestra del comando bisogna utilizzare il codice VBA.

    Si può intercettare la modifica effettuata al foglio dove hai l’elenco, verificare se ad essere stata modificata è una delle celle della tabella dei criteri e di conseguenza riapplicare il filtro.

    Ipotizzando che la tabella dei criteri sia stata creata in B1:C3 e che l’elenco da filtrare sia A5:C100, il codice seguente riapplica il filtro ogni volta che viene modificata una delle celle della tabella dei criteri. Chiaramente devi sostituire con i tuoi intervalli.

    Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Application.Intersect(Target, Range(“B1:C3”)) Is Nothing Then
    Range(“A5:C100”).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range(“B1:C3”), Unique:=False
    End If

    End Sub

    Se non hai dimestichezza su come inserire il codice VBA fammi sapere.

  3. Salve,
    Complimenti per il tutorial. Avrei la seguente domanda:
    Il mio caso presenta una colonna di dati all’interno dei quali si ripete un elemento la cui radice è sempre la medesima (10000) e poi varia. La presenza di questo codice non è associata nè a un criterio di posizione all’interno della stringa nè tantomeno si presenta in ogni stringa. Filtrando semplicemente per 10000 Excel già mi evidenzia le righe il cui codice è presente. Io voglio invece che vengno copiati in una nuova colonna solo i codici che iniziano per 10000 e che il resto del contenuto della stringa non venga copiato.
    Grazie

  4. Ciao Luca,

    probabilmente ti potrebbe tornare utile la voce “Copia in un’altra posizione” del filtro avanzato.

    Ma se mi mandi uno stralcio del tuo file su samuele@amicoexcel.it ti posso dare una risposta più dettagliata.

Comments are closed.