lunes, 8 de junio de 2020

EXCEL: Suma por día de la semana

Excel formula: Sum by weekday

Fórmula genérica

=SUMAPRODUCTO((DIASEM(dates)=day_num)*values)

Explicación

Para sumar datos por día de la semana (es decir, por lunes, martes, miércoles, etc.), puede usar la función SUMAPRODUCTO junto con la función DIASEM.

En el ejemplo que se muestra, la fórmula en H4 es:

=SUMAPRODUCTO((DIASEM(dates,2)=G4)*amts)

Cómo funciona esta fórmula

Quizás se pregunte por qué no estamos usando la función SUMAR.SI o SUMAR.SIS. Estas parecen ser una forma obvia de resumir por días de la semana. Sin embargo, sin agregar una columna auxiliar con un valor de día de la semana, no hay forma de crear un criterio para SUMAR.SI que tenga en cuenta el día de la semana.

En su lugar, usamos la práctica función SUMAPRODUCTO, que maneja los arreglos con gracia sin la necesidad de usar Control + Shift + Enter.

Estamos usando SUMAPRODUCTO con un solo argumento, que consiste en esta expresión:

(DIASEM(dates,2)=G4)*amts

Trabajando de adentro hacia afuera, la función DIASEM se configura con el argumento opcional 2, lo que hace que devuelva los números 1-7 para los días de lunes a domingo, respectivamente. Esto no es necesario, pero hace que sea más fácil enumerar los días en orden y recoger los números en la columna G en secuencia.

DIASEM evalúa cada valor en el rango con nombre "fechas" y devuelve un número. El resultado es una matriz como esta:

{3; 5; 3; 1; 2; 2; 4; 2}

Los números devueltos por DIASEM se comparan con el valor en G4, que es 1.

{3; 5; 3; 1; 2; 2; 4; 2} = 1

El resultado es una matriz de valores VERDADERO / FALSO.

{FALSO; FALSO; FALSO; VERDADERO; FALSO; FALSO; FALSO; FALSO}

A continuación, esta matriz se multiplica por los valores en el rango nombrado "amts". SUMAPRODUCTO solo funciona con números (no texto o booleanos) pero las operaciones matemáticas obligan automáticamente los valores VERDADERO / FALSO a uno y ceros, por lo que tenemos:

{0; 0; 0; 1; 0; 0; 0; 0} * {100; 250; 75; 275; 250; 100; 300; 125}

Cuyos rendimientos:

{0; 0; 0; 275; 0; 0; 0; 0}

Con solo esta matriz única para procesar, SUMAPRODUCTO suma los elementos y devuelve el resultado.


Comentarios en Facebook


0 comentarios:

Copyright © 2021 TRUJILLOSOFT