Contar dias da semana entre datas no Excel

Planilha de escala de trabalho automática Excel
3 de setembro de 2016
10-dicas-de-programacao-vba
10 Dicas de como programar em VBA Excel
10 de setembro de 2016

Contar dias da semana entre datas no Excel

Quantos domingos há entre duas datas? Segundas-feiras? Sábados? Neste artigo você verá como contar dias da semana entre datas no Excel.

Para contar a quantidade de dias da semana entre duas datas, nós utilizaremos quatro funções no Excel, SomarProduto, Dia.Da.Semana, Lin e Indireto. Veja passo-a-passo como construir esta fórmula.

Montando a fórmula

Contar dias da semana entre duas datas Excel 1

Na planilha nós temos a Data 1, Data 2, Dia da semana e a Solução. Nos campos de data colocaremos o intervalo inicial em Data 1, em Data 2 o final, no dia da semana o dia correspondente ao dia da semana 1-Domingo, 2-Segunda-feira, 3-Terça-feira, 4-Quarta-feira, 5-Quinta-feira, 6-Sexta-feira, 7-Sábado e na Solução colocaremos a fórmula.

Fórmula

A fórmula utilizada será a seguinte:

Contar dias da semana entre duas datas Excel 2

=SOMARPRODUTO(- -(DIA.DA.SEMANA(LIN(INDIRETO(B6&”:”&C6)))=D6))

Vamos entender como funciona a fórmula.

A função SOMARPRODUTO realiza a multiplicação de matrizes e a soma de valores.

Nesta função o SOMARPRODUTO realiza a contagem da quantidade de datas que atendem ao requisito de dia da semana especificado na planilha.

O operador faz com que o resultado da matriz seja compreendido como binário, 1 para verdadeiro e 0 para falso, ou seja, na verificação se o dia da semana é o mesmo da planilha ele retorna 1 para verdadeiro e 0 para falso, por exemplo {1,0,0,1,1,0,0,0} e a função SOMARPRODUTO soma estes valores 1+0+0+1+1+0+0+0.

A função Dia.da.semana retorna o dia da semana correspondente de uma data, por exemplo 03/09/2016 retorna 7 indicando que o dia é um sábado.

A função LIN funciona dentro da fórmula em conjunto com a função INDIRETO, convertendo o intervalo em uma matriz, por exemplo B6:C6 dentro da função indireto é aberto por conta da função LIN em uma matriz.

Por exemplo o período de 01/01/2016 á 10/01/2016 dentro da fórmula é aberto como: {42370;42371;42372;42373;42374;42375;42376;42377;42378;42379}, e estes números são interpretados como datas pelo Excel e é verificado se o mesmo é semelhante ao dia da semana da fórmula em =D6.

Se for igual ele retorna 1, senão retorna 0 e o mesmo é somado pela matriz.

Abraço

Marcos Rieper


Clique aqui e leia mais sobre Excel VBA. https://www.guiadoexcel.com.br/vba/ O Guia do Excel foi criado por Marcos Rieper e oferece artigos, dicas, tutoriais e modelos de planilhas prontas. Aqui você encontra tudo sobre Excel, seja de nível básico, intermediário,  avançado e VBA. O Guia do Excel oferece diversos materiais completamente gratuitos para download. Navegue em nosso site e confira! Conheça também a nossa Loja do Excel https://loja.guiadoexcel.com.br/
Cursos

Curso Excel Completo – Curso Excel Básico + Curso Excel Avançado – Acesso Vitalício

R$218,00 R$179,00

COMPRAR
Cursos

Curso Excel Master – Curso Excel Básico + Curso Excel Avançado + Curso VBA Excel + LP – Acesso Vitalício

R$357,00 R$249,00

COMPRAR
Cursos

Curso Excel PRO – Curso Excel Avançado + Curso VBA Excel + Lógica de programação – Acesso Vitalício

R$258,00 R$199,00

COMPRAR
Cursos

Curso Excel Web – Curso VBA Excel + Lógica de programação + Curso Web Scraping VBA- Acesso Vitalício

R$388,90 R$309,00

COMPRAR

11 Comentários

  1. Anderson disse:

    Olá Marcos, bom dia!
    Parabéns pelo seu trabalho, muito bacana. Cheguei a ele por meio de uma consulta na rede, tenho uma tabela de datas aleatórias dentro do ano de 2017, e queria contar o numero de sábados, domingos, quartas, quintas e sextas na tabela, tentei utilizar várias fórmulas mas não estou chegando a um resultado, vi que sua postagem se aproxima muito do que quero, porém ela necessita de data inicial e data final, no meu caso, a contagem tem que acontecer nos intervalos da tabela com 67 datas, pode me ajudar?

    • Marcos Rieper disse:

      No seu caso você precisa do intervalo entre eles ou apenas contar se são sábados ou domingos estas datas?

    • Fábio disse:

      Respondendo ao comentário do Anderson (30 de junho de 2017 at 10:58)

      Anderson, boa tarde!
      Tenho um caso igual ao seu. Resolvi da seguinte forma (usando as dicas do Marcos)
      Digamos que suas datas aleatórias estejam na coluna B e o valor correspondente ao dia da semana que deseja contar esteja na célula C1. Pra contar, basta fazer o seguinte:

      =SOMARPRODUTO(–(DIA.DA.SEMANA($B1:$B600)=C1))
      Espero ter ajudado.
      Abraço!
      Fábio

  2. emerson disse:

    olá, muito útil, apenas para esclarecer uma dúvida, a fórmula copiada direto da página quando colada no excell está diferente do que consta na planilha para download.

    =SOMARPRODUTO(–(DIA.DA.SEMANA(LIN(INDIRETO(B6&”:”&C6)))=D6)) <- planilha
    =SOMARPRODUTO(–(DIA.DA.SEMANA(LIN(INDIRETO(B6&”:”&C6)))=D6)) <- fórmula na página

    há somente um sinal de negativo antes do dia da semana na página, e queria entender porque as aspas estão "em italico" na pagina e não funcionaram na fórmula, eu tive que apagar e digitar novamente, se pude rme ajudar, a curiosidade vai me matar.

  3. Fábio Fernandes disse:

    Marcos, boa noite!
    Estou fazendo um trabalho importante e seus vídeos e posts têm me ajudado muito. Sua didática é ótima! Parabéns!
    Você pode me ajudar mais uma vez? Essa fórmula já me ajudou, mas preciso ir um pouco além na nova fase do trabalho.
    O trabalho consiste em entregar revistas em mãos a pessoas de um determinado bairro. Para fazer a entrega de 100%, é preciso ir em vários horários e vários dias da semana. Pra agilizar, é anotada apenas a data de entrega na frente do número. As anotações me geraram várias datas, como segue

    Rua 7 de setembro
    N° Datas
    23 – 30/05
    25 – 01/06
    27 –
    29 –
    31 – 05/07
    33 – 02/06

    Como eu faço pra calcular quantas dessas datas foram, por exemplo, domingos do mês de julho?

    Obrigado

  4. Fábio Fernandes disse:

    Marcos,

    Como eu posso consultar datas aleatórias em uma coluna e contar quantas dentre essas datas são domingos de um determinado mês?

    Obrigado

  5. ELDER disse:

    ESTOU TENTANDO CRIAR UMA FUNCAO QUE REALIZE A CONTAGEM DA CARGA HORARIO SEMANAL DE ACORDO COM A SEMANA. O PROBLEMA QUE ESTOU TENDO é QUANDO O PRIMEIRO DIA DA SEMANA COMECA DIFERENTE DE SEGUNDA.
    HAVIA DEFINIDO OS INTERVALOS, MAS QUANDO ALTERA O MES OS INTERVALOS DE DOMINGO A DOMINGO SE ALTERAM. SE ALGUEM PUDER ME AJUDAR AGRADECO

  6. Michele disse:

    Fantástico! Era exatamente isso que eu estava procurando e não encontrei em lugar nenhum.

  7. Rogério disse:

    Boa noite,

    Estou utilizando estas fórmulas para realizar a contagem do dia da semana entre datas =SOMARPRODUTO(- -(DIA.DA.SEMANA(LIN(INDIRETO(B6&”:”&C6)))=D6)), mas preciso retirar os feriados com posso fazer? Obrigado pela atenção

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Inscreva-se no nosso canal do Youtube!


Junte-se ao nosso canal do Youtube. Começamos em abril de 2016, mas já temos mais de 06:00 h de treinamentos gratuitos e este número irá aumentar. Vídeos novos todos os sábados.