![](https://cdn.wiki-base.com/4979160/excel_formula_filter_with_multiple_or_criteria__2.png.webp)
Sommario
Per estrarre dati con più condizioni OR, è possibile utilizzare la funzione FILTRO insieme alla funzione CONFRONTA. Nell'esempio mostrato, la formula in F9 è:
=FILTER(B5:D16, ISNUMBER(MATCH(items,F5:F6,0))* ISNUMBER(MATCH(colors,G5:G6,0))* ISNUMBER(MATCH(cities,H5:H6,0)))
dove gli elementi (B3: B16), i colori (C3: C16) e le città (D3: D16) sono denominati intervalli.
Questa formula restituisce i dati in cui l'elemento è (magliette O felpa con cappuccio) E il colore è (rosso O blu) E la città è (Denver OR Seattle).
Spiegazione
In questo esempio, i criteri vengono inseriti nell'intervallo F5: H6. La logica della formula è:
l'articolo è (maglietta O felpa con cappuccio) E il colore è (rosso O blu) E la città è (Denver O Seattle)
La logica di filtraggio di questa formula (l'argomento include) viene applicata con le funzioni ISNUMBER e MATCH, insieme alla logica booleana applicata in un'operazione array.
MATCH è configurato "all'indietro", con valori di ricerca provenienti dai dati e criteri utilizzati per l'array di ricerca. Ad esempio, la prima condizione è che gli articoli devono essere una maglietta o una felpa con cappuccio. Per applicare questa condizione, MATCH è impostato in questo modo:
MATCH(items,F5:F6,0) // check for tshirt or hoodie
Poiché ci sono 12 valori nei dati, il risultato è un array con 12 valori come questo:
(1;#N/A;#N/A;2;#N/A;2;2;#N/A;1;#N/A;2;1)
Questo array contiene errori # N / A (nessuna corrispondenza) o numeri (corrispondenza). I numeri di avviso corrispondono agli articoli che possono essere Tshirt o Felpa con cappuccio. Per convertire questo array in valori VERO e FALSO, la funzione CONFRONTA è racchiusa nella funzione NUMERO ISTANTANEO:
ISNUMBER(MATCH(items,F5:F6,0))
che produce un array come questo:
(TRUE;FALSE;FALSE;TRUE;FALSE;TRUE;TRUE;FALSE;TRUE;FALSE;TRUE;TRUE)
In questo array, i valori TRUE corrispondono a tshirt o hoodie.
La formula completa contiene tre espressioni come quella sopra usata per l'argomento include della funzione FILTER:
ISNUMBER(MATCH(items,F5:F6,0))* // tshirt or hoodie ISNUMBER(MATCH(colors,G5:G6,0))* // red or blue ISNUMBER(MATCH(cities,H5:H6,0))) // denver or seattle
Dopo che MATCH e ISNUMBER sono stati valutati, abbiamo tre array contenenti valori TRUE e FALSE. L'operazione matematica di moltiplicare questi array insieme costringe i valori TRUE e FALSE a 1 e 0, quindi possiamo visualizzare gli array a questo punto in questo modo:
(1;0;0;1;0;1;1;0;1;0;1;1)* (1;0;1;1;0;1;0;0;0;0;0;1)* (1;0;1;0;0;1;0;1;1;0;0;1)
Il risultato, seguendo le regole dell'aritmetica booleana, è un singolo array:
(1;0;0;0;0;1;0;0;0;0;0;1)
che diventa l'argomento include nella funzione FILTER:
=FILTER(B5:D16,(1;0;0;0;0;1;0;0;0;0;0;1))
Il risultato finale sono le tre righe di dati mostrate in F9: H11
Con valori hardcoded
Sebbene la formula nell'esempio utilizzi criteri immessi direttamente nel foglio di lavoro, i criteri possono essere codificati come costanti di matrice in questo modo:
=FILTER(B5:D16, ISNUMBER(MATCH(items,("Tshirt";"Hoodie"),0))* ISNUMBER(MATCH(colors,("Red";"Blue"),0))* ISNUMBER(MATCH(cities,("Denver";"Seattle"),0)))