
Formula generica
=SUMPRODUCT(--(range1=criteria),range2)
Sommario
Per sommare o sommare le colonne in base ai criteri nelle colonne adiacenti, puoi utilizzare una formula basata sulla funzione SUMPRODUCT. Nell'esempio mostrato, la formula in J5 è:
=SUMPRODUCT(--($B5:$H5=J$4),$C5:$I5)
Spiegazione
Fondamentalmente, questa formula utilizza SUMPRODUCT per moltiplicare e sommare i prodotti di due array: array1 e array2 . Il primo array, array1 , è impostato per agire come un "filtro" per consentire solo i valori che soddisfano i criteri.
Array1 utilizza un intervallo che inizia nella prima colonna che contiene valori che devono soddisfare i criteri. Questi "valori dei criteri" si trovano in una colonna a sinistra e immediatamente adiacente ai "valori dei dati".
Il criterio viene applicato come un semplice test che crea una matrice di valori VERO e FALSO:
--($B5:$H5=J$4)
Questo bit della formula "verifica" ogni valore nel primo array utilizzando i criteri forniti, quindi utilizza un doppio negativo (-) per forzare i valori VERO e FALSO risultanti a 1 e 0. Il risultato è questo:
(1,0,0,0,1,0,1)
Notare che gli 1 corrispondono alle colonne 1,5 e 7, che soddisfano i criteri di "A".
Per array2 all'interno di SUMPRODUCT, utilizziamo un intervallo "spostato" di una colonna a destra. Questo intervallo inizia con la prima colonna contenente i valori da sommare e termina con l'ultima colonna che contiene i valori da sommare.
Quindi, nella formula di esempio in J5, dopo che gli array sono stati popolati, abbiamo:
=SUMPRODUCT((1,0,0,0,1,0,1),(1,"B",1,"A",1,"A",1))
Poiché SUMPRODUCT è programmato specificamente per ignorare gli errori che derivano dalla moltiplicazione dei valori di testo, l'array finale ha questo aspetto:
(1,0,0,0,1,0,1)
Gli unici valori che "sopravvivono" alla moltiplicazione sono quelli che corrispondono a 1s all'interno di array1 . Si può pensare alla logica in array1 "filtrare" i valori in array2 .