Como calcular as idades antes de 1/1/1900 no Excel

IMPORTANTE: Este artigo foi traduzido pelo software de tradução automática da Microsoft e eventualmente pode ter sido editado pela Microsoft Community através da tecnologia Community Translation Framework (CTF) ou por um tradutor profissional. A Microsoft oferece artigos traduzidos automaticamente por software, por tradutores profissionais e editados pela comunidade para que você tenha acesso a todos os artigos de nossa Base de Conhecimento em diversos idiomas. No entanto, um artigo traduzido pode conter erros de vocabulário, sintaxe e/ou gramática. A Microsoft não é responsável por qualquer inexatidão, erro ou dano causado por qualquer tradução imprecisa do conteúdo ou por seu uso pelos nossos clientes.

Clique aqui para ver a versão em Inglês deste artigo: 245104
Sumário
Embora as fórmulas do Microsoft Excel Data só podem usar datas digitadas entre 1/1/1900 e 31/12/9999, você pode usar um personalizado de Visual Basic for Applications do Microsoft função para calcular a idade (em anos) de alguém ou algo que foi criado pela primeira vez antes de 1 de janeiro de 1900.

back to the top

Usar macros para calcular a idade

A Microsoft fornece exemplos de programação somente para ilustração, sem garantia expressa ou implícita. Isso inclui, mas não está limitado a, garantias implícitas de comercialização ou adequação a um propósito específico. Este artigo presume que você esteja familiarizado com a linguagem de programação que está sendo demonstrada e com as ferramentas usadas para criar e depurar procedimentos. Engenheiros de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento, mas eles não modificarão esses exemplos para fornecer funcionalidades adicionais ou construir procedimentos para atender às suas necessidades específicas.
Excel insere datas anteriores a 1/1/1900 como texto. Essa função funciona para datas inseridas como texto que começa com 1/1/0001, datas normais e pode manipular datas quando a data de início é anterior a 1900 e data final é depois de 1900. Para usar a macro, siga estas etapas:
  1. Inicie o Excel. Exiba a planilha em que você deseja usar a função.
  2. Pressione ALT + F11 para alternar para o Editor do Visual Basic.
  3. No menu Inserir , clique em módulo.
  4. Digite o seguinte código no módulo:
    ' This is the initial function. It takes in a start date and an end date.Public Function AgeFunc(stdate As Variant, endate As Variant)        ' Dim our variables.    Dim stvar As String    Dim stmon As String    Dim stday As String    Dim styr As String    Dim endvar As String    Dim endmon As String    Dim endday As String    Dim endyr As String    Dim stmonf As Integer    Dim stdayf As Integer    Dim styrf As Integer    Dim endmonf As Integer    Dim enddayf As Integer    Dim endyrf As Integer    Dim years As Integer        ' This variable will be used to modify string length.    Dim fx As Integer    fx = 0        ' Calls custom function sfunc which runs the Search worksheet function    ' and returns the results.    ' Searches for the first "/" sign in the start date.    stvar = sfunc("/", stdate)        ' Parse the month and day from the start date.    stmon = Left(stdate, sfunc("/", stdate) - 1)    stday = Mid(stdate, stvar + 1, sfunc("/", stdate, sfunc("/", stdate) + 1) - stvar - 1)        ' Check the length of the day and month strings and modify the string     ' length variable.    If Len(stday) = 1 Then fx = fx + 1    If Len(stmon) = 2 Then fx = fx + 1        ' Parse the year, using information from the string length variable.    styr = Right(stdate, Len(stdate) - (sfunc("/", stdate) + 1) - stvar + fx)            ' Change the text values we obtained to integers for calculation     ' purposes.    stmonf = CInt(stmon)    stdayf = CInt(stday)    styrf = CInt(styr)        ' Check for valid date entries.    If stmonf < 1 Or stmonf > 12 Or stdayf < 1 Or stdayf > 31 Or styrf < 1 Then        AgeFunc = "Invalid Date"        Exit Function    End If    ' Reset the string length variable.    fx = 0        ' Parse the first "/" sign from the end date.    endvar = sfunc("/", endate)        ' Parse the month and day from the end date.    endmon = Left(endate, sfunc("/", endate) - 1)    endday = Mid(endate, endvar + 1, sfunc("/", endate, sfunc("/", endate) + 1) - endvar - 1)        ' Check the length of the day and month strings and modify the string     ' length variable.    If Len(endday) = 1 Then fx = fx + 1    If Len(endmon) = 2 Then fx = fx + 1        ' Parse the year, using information from the string length variable.    endyr = Right(endate, Len(endate) - (sfunc("/", endate) + 1) - endvar + fx)            ' Change the text values we obtained to integers for calculation     ' purposes.    endmonf = CInt(endmon)    enddayf = CInt(endday)    endyrf = CInt(endyr)        ' Check for valid date entries.    If endmonf < 1 Or endmonf > 12 Or enddayf < 1 Or enddayf > 31 Or endyrf < 1 Then        AgeFunc = "Invalid Date"        Exit Function    End If        ' Determine the initial number of years by subtracting the first and     ' second year.    years = endyrf - styrf        ' Look at the month and day values to make sure a full year has passed.     If stmonf > endmonf Then        years = years - 1    End If            If stmonf = endmonf And stdayf > enddayf Then        years = years - 1    End If    ' Make sure that we are not returning a negative number and, if not,     ' return the years.    If years < 0 Then        AgeFunc = "Invalid Date"    Else        AgeFunc = years    End If    End Function' This is a second function that the first will call.' It runs the Search worksheet function with arguments passed from AgeFunc.' It is used so that the code is easier to read.Public Function sfunc(x As Variant, y As Variant, Optional z As Variant)    sfunc = Application.WorksheetFunction.Search(x, y, z)End Function					
  5. Salve o arquivo.
  6. Digite os seguintes dados:
    A1   01/01/1887A2   02/02/1945						
    Na célula A3, digite a seguinte fórmula
    = (AgeFuncData de início,EndDate)
    onde Data de início é uma referência de célula para a sua primeira data (A1) e EndDate é uma referência de célula para a sua segunda data (A2).

    O resultado deve ser 58.
Nota: Verifique se todas as datas anteriores a 1/1/1900 estão válidas. Datas inseridas como texto não são verificados pelo Excel.

back to the top
Referências
Para obter mais informações sobre como usar o código de exemplo neste artigo, clique no número abaixo para ler o artigo na Base de Conhecimento da Microsoft:
212536 Como executar o código de exemplo de artigos da Base de Conhecimento

back to the top
XL2000 xl2003 xl2007

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 245104 - Última Revisão: 05/07/2016 18:42:00 - Revisão: 7.0

Microsoft Office Excel 2007, Microsoft Excel 2002 Standard Edition, Microsoft Excel 2000 Standard Edition

  • kbhowtomaster kbmt KB245104 KbMtpt
Comentários