![](https://cdn.wiki-base.com/3585217/excel_formula_count_if_row_meets_internal_criteria__2.png.webp)
Formula generica
=SUMPRODUCT(--(logical_expression))
Sommario
Per contare le righe in una tabella che soddisfano criteri calcolati interni, senza utilizzare una colonna di supporto, è possibile utilizzare la funzione SUMPRODUCT.
Contesto
Immagina di avere una tabella dei dati di vendita per diversi prodotti. Hai una colonna per le vendite il mese scorso e una colonna per le vendite nel mese corrente. Desideri contare i prodotti (righe) in cui le vendite correnti sono inferiori alle vendite del mese scorso. Non puoi utilizzare COUNTIF per questo, perché COUNTIF è una funzione basata su intervallo. Un'opzione è aggiungere una colonna helper che sottrae le vendite del mese scorso dalle vendite di questo mese, quindi utilizzare COUNTIF per contare i risultati inferiori a zero. Ma cosa succede se non vuoi (o non puoi) aggiungere una colonna helper? In tal caso, puoi utilizzare SUMPRODUCT.
Nell'esempio mostrato, la formula nella cella G6 è:
=SUMPRODUCT(--(C5:C10>D5:D10))
Spiegazione
SUMPRODUCT è progettato per funzionare con gli array. Moltiplica gli elementi corrispondenti in due o più array e somma i prodotti risultanti. Di conseguenza, è possibile utilizzare SUMPRODUCT per elaborare matrici risultanti dall'applicazione di criteri a un intervallo di celle. Il risultato di tali operazioni saranno gli array, che SUMPRODUCT può gestire in modo nativo, senza richiedere la sintassi Control Shift Enter.
In questo caso, confrontiamo semplicemente i valori nella colonna C con i valori nella colonna D utilizzando un'espressione logica:
C5:C10>D5:D10
Poiché abbiamo a che fare con intervalli (array), il risultato è un array di valori VERO FALSO come questo:
(FALSO; VERO; FALSO; VERO; FALSO; FALSO)
Per forzarli in uno e zero, usiamo un doppio operatore negativo (chiamato anche doppio unario):
--(C5:C10>D5:D10)
Che produce e schiera in questo modo:
(0; 1; 0; 1; 0; 0)
che viene quindi elaborato da SUMPRODUCT. Poiché esiste un solo array, SUMPRODUCT somma semplicemente gli elementi nell'array e restituisce un totale.