quarta-feira, 12 de setembro de 2018

Calcular diferença entre duas datas

Diferença entre duas datas

Muitos alunos me perguntam como calcular de forma mais precisa a diferença entre datas.

Para entender melhor, considere o seguinte exemplo:


Se aplicarmos a equação básica para cálculo da diferença entre duas datas, (1) teremos 401 dias:
Lembre-se que devido a variação de dias entre os meses e anos, nem sempre é correto aplicar divisões simples de 30 dias para meses e ou 365 dias, para cálculo de anos.

Antes de apresentarmos a solução você precisa entender uma poderosa função.

Função DataDif()

Segundo a Microsoft:

SINTAXE:
DATADIF(data_inicial; data_final; unidade)

Data_inicial   :  Uma data que representa a primeira data, ou inicial, do período. As datas podem ser inseridas como cadeias de texto entre aspas (por exemplo, "30/1/2001"), como números de série (por exemplo, 36921, que representa 30 de janeiro de 2001, se você estiver usando o sistema de data 1900) ou como resultado de outras fórmulas ou funções (por exemplo, DATA.VALOR("30/1/2001")).

Data_final  :   Uma data que representa a última data, ou final, do período.

Unidade :    O tipo de informação que você deseja retornar:

"A"    - O número de anos completos no período.
"M"   - O número de meses completos no período.
"D"    - O número de dias no período. Os meses e os anos das datas são ignorados.
"AM" - A diferença entre os meses na data_inicial e data_final. Os dias e os anos das datas são ignorados.
"AD" - A diferença entre os dias da data_inicial e data_final. Os anos das datas são ignorados.
"MD"- A diferença entre os dias na data_inicial e data_final. 

Importante:
Não recomendamos usar o argumento "MD", já que existem limitações conhecidas com ele.
Dependendo da versão do Office utilizado você deverá substituir a Letra "A" (ano), da unidade por "Y" (year).

Agora que apresentamos esta função, vejamos como aplica-lá em nosso exemplo:

Calcular o número de anos (2):


Calcular o número de meses (3):
Calcular o número de dias (4):
Observação: Como citado anteriormente a unidade "MD" é consideravelmente instável , desta forma associamos a função SE(), conforme exemplo (4:)

Abaixo demonstro como apresentar o resultado, consolidando o exemplificado acima: