Fórmula Excel: Contagem dos dias da semana entre as datas -

Índice

Fórmula genérica

=SUMPRODUCT(--(WEEKDAY(ROW(INDIRECT(start&":"&end)))=dow))

Resumo

Para contar os dias da semana (segundas, sextas, domingos, etc.) entre duas datas, você pode usar uma fórmula de matriz que usa várias funções: SUMPRODUCT, WEEKDAY, ROW e INDIRECT. No exemplo mostrado, a fórmula na célula E6 é

=SUMPRODUCT(--(WEEKDAY(ROW(INDIRECT(B6&":"&C6)))=D6))

Na versão genérica da fórmula, início = data de início, fim = data de término e dow = dia da semana.

Explicação

Basicamente, essa fórmula usa a função WEEKDAY para testar várias datas para ver se elas caem em um determinado dia da semana (dow) e a função SUMPRODUCT para calcular o total.

Quando é fornecida uma data, WEEKDAY simplesmente retorna um número entre 1 e 7 que corresponde a um determinado dia da semana. Com as configurações padrão, 1 = domingo e 7 = sábado. Portanto, 2 = segunda-feira, 6 = sexta-feira e assim por diante.

O truque para essa fórmula é entender que as datas no Excel são apenas números de série que começam em 1º de janeiro de 1900. Por exemplo, 1º de janeiro de 2016 é o número de série 42370 e 8 de janeiro é 42377. As datas no Excel só se parecem com datas quando um formato de número de data é aplicado.

Portanto, a questão é - como você pode construir uma matriz de datas que pode inserir na função WEEKDAY para descobrir os dias da semana correspondentes?

A resposta é usar ROW com funções INDIRETAS como esta:

ROW(INDIRECT(date1&":"&date2))

INDIRETO permite que as datas concatenadas "42370: 42377" sejam interpretadas como números de linha. Em seguida, a função ROW retorna uma matriz como esta:

(42370;42371;42372;42373;42374;42375;42376;42377)

A função WEEKDAY avalia esses números como datas e retorna esta matriz:

(6;7;1;2;3;4;5;6)

que é testado em relação ao dia da semana especificado (6, neste caso, de D6). Depois que os resultados do teste são convertidos em 1s e 0s com o hífen duplo, essa matriz é processada por SUMPRODUCT:

(1;0;0;0;0;0;0;1)

Que retorna 2.

Com SEQUENCE

Com a nova função SEQUENCE, esta fórmula pode ser simplificada de alguma forma assim:

=SUMPRODUCT(--(WEEKDAY(SEQUENCE(end-start+1,1,start,1))=dow))

Nesta versão, usamos SEQUENCE para gerar a matriz de datas diretamente, sem a necessidade de INDIRETO ou ROW.

Artigos interessantes...