Formula di Excel: estrae i valori comuni da due elenchi -

Formula generica

=FILTER(list1,COUNTIF(list2,list1))

Sommario

Per confrontare due elenchi ed estrarre valori comuni, è possibile utilizzare una formula basata sulle funzioni FILTER e COUNTIF. Nell'esempio mostrato, la formula in F5 è:

=FILTER(list1,COUNTIF(list2,list1))

dove list1 (B5: B15) e list2 (D5: D13) sono intervalli denominati. Il risultato, i valori visualizzati in entrambi gli elenchi, rientra nell'intervallo F5: F11.

Spiegazione

La funzione FILTER accetta un array di valori e un argomento "include" che filtra l'array in base a un'espressione o un valore logico.

In questo caso, l'array viene fornito come intervallo denominato "list1", che contiene tutti i valori in B5: B15. L' argomento include viene fornito dalla funzione COUNTIF, che è nidificata all'interno di FILTER:

=FILTER(list1,COUNTIF(list2,list1))

COUNTIF viene impostato con list2 come intervallo e list1 come criteri . Poiché forniamo CONTA.SE undici valori di criteri, CONTA.SE restituisce undici risultati in un array come questo:

(1;1;0;1;0;1;0;1;0;1;1)

Notare che gli 1 corrispondono agli elementi in list2 che appaiono in list1.

Questo array viene fornito direttamente alla funzione FILTER come argomento "include":

=FILTER(list1,(1;1;0;1;0;1;0;1;0;1;1))

La funzione FILTER filtra list1 utilizzando i valori forniti da COUNTIF. I valori associati a zero vengono rimossi; altri valori vengono conservati.

Il risultato finale è un array di valori che esistono in entrambi gli elenchi, che ricade nell'intervallo F5: F11.

Logica estesa

Nella formula sopra, usiamo i risultati grezzi di COUNTIF come filtro. Questo funziona perché Excel valuta qualsiasi valore diverso da zero come VERO e zero come FALSO. Se CONTA.SE restituisce un conteggio maggiore di 1, il filtro continuerà a funzionare correttamente.

Per forzare esplicitamente i risultati VERO e FALSO, puoi utilizzare "> 0" in questo modo:

=FILTER(list1,COUNTIF(list2,list1)>0)

Rimuovi i duplicati o ordina

Per rimuovere i duplicati, basta annidare la formula all'interno della funzione UNIQUE:

=UNIQUE(FILTER(list1,COUNTIF(list2,list1)))

Per ordinare i risultati, annidare nella funzione SORT:

=SORT(UNIQUE(FILTER(list1,COUNTIF(list2,list1))))

Valori di elenco mancanti da list2

Per visualizzare i valori in list1 mancanti da list2, puoi invertire la logica in questo modo:

=FILTER(list1,COUNTIF(list2,list1)=0)

Articoli interessanti...