JUNIM
Cyber Highlander
Registrado
41.8K Mensagens
1.4K Curtidas
Crie uma macro com o nome AnoMesDia copie e cole o código abaixo, depois é só colocar na célula algo como:
=AnoMesDia(a1;a2) ou =AnoMesDia(a1;b1) ou acessar pelo menu de funções > Personalizadas.
(Dica da Revista Info)
Copie e cole na macro:
' ---------------------------------------------------------
' Função: AnoMesDia
' Obs: A recepção de Data1 e Data2 como variáveis Date
' tem a vantagem de permitir a aceitação de datas
' em qualquer formato reconhecido pelo Excel.
' A desvantagem é qie, por exemplo, se Data1=26,
' a função aceita: 26 é o número serial de
' 26/01/1900, e vai fazer o cálculo nessa base.
' Uma alternativa é trocar Data1 e Data2 para
' variáveis do tipo String e incluir na função
' testes de data.
' ---------------------------------------------------------
Function AnoMesDia(Data1 As Date, Data2 As Date) As String
On Error GoTo AnoMesDia_Err
Dim sTmp As String ' valor tmp da função
Dim nDMA As Long ' n Anos, Meses, Dias
Dim NewDate As Date ' data auxiliar de cálculo
Dim sSngPlural As String ' string (mês, meses), (ano, anos)
' Faz o swap de datas: ordena/ evita negativos
If Data1 > Data2 Then
NewDate = Data2
Data2 = Data1
Data1 = NewDate
End If
' Bloco Ano
' Calcula número inteiro de anos
nDMA = DateDiff("yyyy", Data1, Data2)
' Se Data1+nDMA>Data2, subtrai 1
If DateAdd("yyyy", nDMA, Data1) > Data2 Then
nDMA = nDMA - 1
End If
sSngPlural = " ano, "
If nDMA > 1 Then sSngPlural = " anos, "
sTmp = nDMA & sSngPlural
' Bloco Mês
' Nova data de referência
NewDate = DateAdd("yyyy", nDMA, Data1)
nDMA = DateDiff("m", NewDate, Data2)
If DateAdd("m", nDMA, NewDate) > Data2 Then
nDMA = nDMA - 1
End If
sSngPlural = " mês e "
If nDMA > 1 Then sSngPlural = " meses e "
sTmp = sTmp & nDMA & sSngPlural
' Bloco Dia
NewDate = DateAdd("m", nDMA, NewDate)
nDMA = DateDiff("d", NewDate, Data2)
sSngPlural = " dia"
If nDMA > 1 Then sSngPlural = " dias"
sTmp = sTmp & nDMA & sSngPlural
' Valor final da função
AnoMesDia = sTmp
AnoMesDia_Fim:
Exit Function
AnoMesDia_Err:
MsgBox Err.Description
Resume AnoMesDia_Fim
End Function
Eu não dou o peixe ><((((º>Ooº ... ensino a pescar! eepSkyBlue">..._)¯`·._)¯`·._)¯`·...
arkOrange">Entre no fórum para o debate
:, não para um embate!!! 
Essa Luz! É claro que é JESUS!!! (by RC)
felipecunha
Novo Membro
Registrado
2 Mensagens
0 Curtidas
A fórmula ficou um pouco longa mas funciona.
Considere a célula D12 a data de nascimento.
=ANO(HOJE())-ANO(D12)-1+SE(DATA(1901;MÊS(D12);DIA(D12))-DATA(1901;MÊS(HOJE());DIA(HOJE()))>=0;1;0)
Feito!