Fórmula de Excel: sumar columnas según criterios adyacentes -

Fórmula genérica

=SUMPRODUCT(--(range1=criteria),range2)

Resumen

Para sumar o subtotalizar columnas según criterios en columnas adyacentes, puede utilizar una fórmula basada en la función SUMPRODUCTO. En el ejemplo que se muestra, la fórmula en J5 es:

=SUMPRODUCT(--($B5:$H5=J$4),$C5:$I5)

Explicación

En el núcleo, esta fórmula utiliza SUMPRODUCT para multiplicar y luego sumar productos de dos matrices: matriz1 y matriz2 . La primera matriz, matriz1 , está configurada para actuar como un "filtro" para permitir solo valores que cumplan con los criterios.

Array1 usa un rango que comienza en la primera columna que contiene valores que deben pasar criterios. Estos "valores de criterio" se encuentran en una columna a la izquierda de los "valores de datos" e inmediatamente adyacentes a ellos.

Los criterios se aplican como una prueba simple que crea una matriz de valores VERDADERO y FALSO:

--($B5:$H5=J$4)

Este bit de la fórmula "prueba" cada valor en la primera matriz utilizando los criterios proporcionados, luego usa un doble negativo (-) para coaccionar los valores VERDADERO y FALSO resultantes a unos y ceros. El resultado se ve así:

(1,0,0,0,1,0,1)

Tenga en cuenta que los 1 corresponden a las columnas 1, 5 y 7, que cumplen los criterios de "A".

Para array2 dentro de SUMPRODUCT, usamos un rango que está "desplazado" una columna a la derecha. Este rango comienza con la primera columna que contiene valores para sumar y termina con la última columna que contiene valores para sumar.

Entonces, en la fórmula de ejemplo en J5, después de que se hayan llenado las matrices, tenemos:

=SUMPRODUCT((1,0,0,0,1,0,1),(1,"B",1,"A",1,"A",1))

Dado que SUMPRODUCT está programado específicamente para ignorar los errores que resultan de multiplicar valores de texto, la matriz final se ve así:

(1,0,0,0,1,0,1)

Los únicos valores que "sobreviven" a la multiplicación son los que corresponden a unos dentro de array1 . Puede pensar en la lógica de array1 "filtrando" los valores en array2 .

Articulos interesantes...