Como Gerar Todas as Datas do Mês no Excel - Guia do Excel
Publicado em Avançado por Jardiel EuflázioPublicado em 17/06/2022 15/06/2022
Veja passo-a-passo como gerar todas as datas do mês no Excel.
Obter a lista de todas as datas do mês pode ser útil para diversos fins, sobremaneira para montar relatórios.
E para isso, a depender do cenário, o Excel oferece uma série de recursos que podem ir desde o preenchimento simples de séries, com ou sem a alça de preenchimento, ou até mesmo o uso de fórmulas.
A seguir veremos algumas situações e como podemos lançar mão de algumas alternativas interessantes para obter as datas do mês. Em todos os casos, tomaremos como base o mês de julho de 2023.
NOTA: este artigo não objetiva elencar a criação de tabela de dimensão calendário, tarefa que se recomenda desenvolver no Power Query, podendo ainda ser implementada no Power Pivot.
2. Métodos para a obtenção das datas do mês
Este é o modo mais trivial de se preencher as datas desejadas. Basta inserir a data inicial em uma célula e, com ela selecionada, arrastar (por linha ou coluna) com o botão esquerdo do mouse através da alça de preenchimento para gerar as próximas datas, avançando 1 dia por vez a cada célula.
Ao arrastar para baixo, a cada célula, podemos ver o limite dos dados em que as datas sugeridas são alteradas. A imagem seguinte mostra que encontramos o ponto de parada (31/07/2023) para gerar todas as datas desejadas, referentes a julho de 2023.
Ao soltarmos o botão esquerdo do mouse, serão inseridas todas as datas desejadas, conforme ilustra a imagem a seguir.
Uma desvantagem deste método é que precisamos controlar manualmente a parada dos nossos dados, definindo o seu limite. Não é incomum pararmos de arrastar no momento errado, com dados faltantes ou em excesso, mesmo que o Excel indique o número (no formato de data, em nosso caso) que será gerado por último a cada arrastar.
2.2. Preenchimento de séries
Em relação ao executado com a alça de preenchimento, citado no item 2.1, o preenchimento de séries possui a grande vantagem de parar de inserir os dados exatamente no limite desejado, sem que seja preciso controlar a parada dos dados manualmente. A desvantagem também é a sua atualização, que, quando necessária, requer toda a repetição do processo.
Da mesma forma que o exposto com a alça de preenchimento, o seu funcionamento se dá com base em um número que será o seu ponto de partida: a data inicial do mês.
Considere a imagem a seguir em que já disponibilizamos a data inicial de julho de 2023 (em B4), uma vez que desejamos gerar todas as datas deste mês/ano.
Devemos clicar nas opções Preencher > Série, presentes no grupo Edição.
Será exibida a caixa de opções de Série, para serem definidos os parâmetros. Conforme imagem a seguir, escolhemos a opção Colunas para que as datas do mês sejam disponibilizadas ao longo da coluna B. Se optarmos pela opção padrão, que é Linhas, a série de datas geradas será disponibilizada ao longo da linha 4. O tipo Data é reconhecido automaticamente, além de Dia, na unidade de data. O Incremento padrão é 1, e o manteremos. Ele indica que as datas que serão geradas avançarão de 1 em 1 dia. O Limite sempre é exibido em branco. Deveremos informar neste campo o último valor a ser gerado na série de datas. Em nosso caso, devemos determinar a última data desejada, que será o fim do mês de julho de 2023, ou seja: 31/07/2023, conforme exibe a imagem seguinte.
Uma primeira solução pode ser implementada com a função SEQUÊNCIA. O seu primeiro argumento requer a quantidade de linhas a gerar, que será o número de dias do mês (que pode ser 28, 29, 30 ou 31). Para termos o número de dias do mês dinamicamente, usamos a função FIMMÊS para obter a última data do mês desejado e com a função DIA obtemos o número do dia presente nesta data, que implica na quantidade de dias do mês. O segundo argumento de SEQUÊNCIA é a quantidade de colunas, e ficará omitido (por isso temos ponto e vírgula 2 vezes consecutivas na fórmula), visto que desejamos despejar as datas ao longo de apenas 1 coluna. O terceiro argumento de SEQUÊNCIA é o ponto de partida, ou seja, a data inicial. Para informar a data inicial usamos FIMMÊS, que retorna a última data do mês anterior, restando somar 1 para obter a primeira data de nosso mês em questão.
A fórmula inserida foi =SEQUÊNCIA(DIA(FIMMÊS(C4&C5;0));;FIMMÊS(C4&C5;-1)+1). Um fator importante a destacar é que em ambas as ocorrências de FIMMÊS, seu primeiro argumento concatena o nome do mês com o ano. Internamente, esta concatenação resulta no primeiro dia do mês, que em nosso caso é 01/07/2023.
A próxima imagem demonstra que teremos resultados satisfatórios mesmo que tenhamos o nome do mês escrito por completo (julho, em vez de jul), sem abreviação e sem alterar a fórmula mencionada.
Para versões do Excel em que não há a função SEQUÊNCIA, a tarefa poderá ser suprida com as funções LIN e INDIRETO. A próxima imagem exibe a fórmula proposta, que foi =LIN(INDIRETO(FIMMÊS(C4&C5;-1)+1&":"&FIMMÊS(C4&C5;0))). Esta fórmula também retornará as datas desejadas caso os meses estejam com os nomes completos (sem abreviação).
Esta fórmula gera desde a data inicial até a data final do período. Analisando separadamente: o trecho FIMMÊS(C4&C5;-1)+1 gera a data inicial do mês e o trecho FIMMÊS(C4&C5;0) gera a data final do mês.
Uma outra fórmula alternativa é =SE(MÊS($C$4&$C$5)=MÊS(($C$4&$C$5)+LINS($B$7:B7)-1);($C$4&$C$5)+LINS($B$7:B7)-1;""). Esta fórmula deve ser inserida e arrastada para preencher 31 células, visto que podemos ter até 31 datas em um determinado mês. As últimas células arrastadas caso não gerem datas do mês desejado exibirão resultados em branco.
Para obtermos os nossos resultados tomando como base os meses em sua representação numérica, indo de 1 até 12, podemos usar as mesmas fórmulas elencadas anteriormente, com uma pequena diferença. Em vez de concatenarmos, na função FIMMÊS, apenas o mês com o ano, precisaremos incluir nesta concatenação um separador usual para datas, como hífen (-) ou a tradicional barra (/). A nossa concatenação então terá: número do mês + separador + ano.
A imagem a seguir mostra a nossa solução com a função SEQUÊNCIA.
A fórmula inserida foi =SEQUÊNCIA(DIA(FIMMÊS(F4&"/"&F5;0));;FIMMÊS(F4&"/"&F5;-1)+1).
Já a imagem seguinte mostra a nossa solução com as funções LIN e INDIRETO.
A fórmula inserida foi =LIN(INDIRETO(FIMMÊS(F4&"/"&F5;-1)+1&":"&FIMMÊS(F4&"/"&F5;0))).
Uma outra fórmula alternativa é =SE(MÊS($F$4&"/"&$F$5)=MÊS(($F$4&"/"&$F$5)+LINS($E$7:E7)-1);($F$4&"/"&$F$5)+LINS($E$7:E7)-1;""). Esta fórmula deve ser inserida e arrastada para preencher 31 células, visto que podemos ter até 31 datas em um determinado mês. As últimas células arrastadas caso não gerem datas do mês desejado exibirão resultados em branco.
NOTA: Estas fórmulas em que concatenamos separadores de datas também podem ser usadas no Cenário 1 deste item 2.3 a) e retornarão corretamente as datas esperadas. Em verdade, elas podem ser consideradas as fórmulas definitivas para ambas as situações pois são mais abrangentes. No entanto, apresentamos agora as fórmulas com a concatenação do separador de datas apenas para evidenciar que no Cenário 1 esta concatenação é dispensável, mas não implica em erros caso seja utilizada.
Outra situação que pode ocorrer é basear a lista de datas do mês a gerar a partir de uma de suas datas. Aqui, apresentamos uma flexibilidade quanto à data de referência, que poderá ser qualquer data do mês desejado. Assim, para gerar as datas de julho de 2023, caso explorado neste artigo, a data de referência poderá ser qualquer data entre 01/07/2023 e 31/07/2023.
Uma primeira solução a citar será com a função SEQUÊNCIA. A imagem a seguir mostra a função SEQUÊNCIA aplicada de maneira bastante similar àquela do item 2.3 a) no Cenário 1. A diferença é que não precisamos concatenar o nome do mês com o ano dentro do FIMMÊS, visto que já temos uma data pronta para tomar como base (na célula I5).
A fórmula inserida foi =SEQUÊNCIA(DIA(FIMMÊS(I5;0));;FIMMÊS(I5;-1)+1).
Com LIN e INDIRETO podemos obter os mesmos resultados, conforme imagem a seguir.
Note que a fórmula foi bem parecida com aquela apresentada no item 2.3 a), Cenário 1. A fórmula inserida foi =LIN(INDIRETO(FIMMÊS(I5;-1)+1&":"&FIMMÊS(I5;0))). Neste exemplo também não foi necessário fazer qualquer tipo de concatenação porque já temos uma data pronta para tomar como base.
Uma última alternativa apresentada está ilustrada na imagem a seguir.
A fórmula inserida foi =SE(MÊS($I$5)=MÊS($I$5-DIA($I$5)+LINS($H$7:H7));$I$5-DIA($I$5)+LINS($H$7:H7);""). Esta fórmula incrementa as datas com base na função LINS e exibe resultados vazios ao testar cada data gerada e concluir que o mês da data gerada é diferente do mês da data de referência.