Logo Hardware.com.br
PurePunk
PurePunk Membro Senior Registrado
542 Mensagens 0 Curtidas

formula do excel com datas... pra saber a idade

#1 Por PurePunk 01/12/2005 - 11:54
pessoal tenho uma questão a resolver... tenho q fazer um calculo de datas pra saber a idade de uma pessoa... coloco o nascimento 12/07/2002... hj eh 01/12/2005 me retornou 1238 dias, como faço pra virar digamos 2anos e 11 meses... ou 2 anos e 354 dias? parece uma coisa facil... mas não consigo fazer...
JUNIM
JUNIM Cyber Highlander Registrado
41.8K Mensagens 1.4K Curtidas
#2 Por JUNIM
01/12/2005 - 12:32
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 cap_feceiro.png:, não para um embate!!! cap_chateado.png
Essa Luz! É claro que é JESUS!!! (by RC)
© 1999-2025 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal