
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.