Berekening van de leef tijd vóór 1-1-1900 in Excel

Vertaalde artikelen Vertaalde artikelen
Artikel ID: 245104 - Bekijk de producten waarop dit artikel van toepassing is.
Alles uitklappen | Alles samenvouwen

Op deze pagina

Samenvatting

Hoewel datum formules van Microsoft Excel alleen met datums tussen 1-1-1900 en 31-12-9999, kunt u een aangepast Microsoft Visual Basic for Applications-functie voor het berekenen van de leef tijd (in jaren) van iemand of iets dat vóór 1 januari 1900 is gemaakt.

Macro gebruiken voor het berekenen van de leef tijd

Microsoft biedt program meer voorbeelden ter illustratie alleen, zonder expliciete of impliciete garantie. Dit omvat, maar is niet beperkt tot, de impliciete garanties van verkoopbaarheid of geschiktheid voor een bepaald doel. In dit artikel wordt ervan uitgegaan dat u bekend met de programmeer taal worden opgespoord en met de hulp programma's die worden gebruikt bent voor het maken en waarmee fouten in procedures. Ondersteuningstechnici van Microsoft kunnen helpen verklaren de functionaliteit van een bepaalde procedure, maar zij zal deze voorbeelden om extra functionaliteit of samens tellen van procedures om te voldoen aan uw specifieke vereisten niet wijzigen.
Datums vóór 1-1-1900 worden ingevoerd als tekst. Deze functie werkt voor datums als tekst die begint met 1/1/0001 en normale data kan verwerken datums wanneer datum vóór 1900 en einddatum na 1900. De macro wilt gebruiken, gaat u als volgt te werk:
  1. Excel start. Het werk blad waarop u de functie wilt weer geven.
  2. Druk op ALT + F11 om over te schakelen naar de Visual Basic Editor.
  3. Op deInvoegenmenu, klikt u opModule.
  4. Typ de volgende code in de module:
    ' 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. Sla het bestand.
  6. Typ de volgende gegevens:
    A1   01/01/1887
    A2   02/02/1945
    						
    Voer de volgende formule in cel A3
    = (AgeFuncStart Date,einddatum)
    waarStart Dateeen cel verwijzing op de eerste datum (A1) eneinddatumeen cel verwijzing naar de tweede datum (A2) is.

    Het resultaat moet 58.
OPMERKING: Alle datums vóór 1-1-1900 geldigheid controleren. Datums die worden ingevoerd als tekst niet door Excel worden gecontroleerd.

Referenties

Klik voor meer informatie over het gebruik van de voorbeeldcode in dit artikel het volgende artikelnummer om het artikel in de Microsoft Knowledge Base te bekijken:
212536Voorbeeldcode uit Knowledge Base-artikelen uitvoeren

Eigenschappen

Artikel ID: 245104 - Laatste beoordeling: dinsdag 1 maart 2011 - Wijziging: 2.0
De informatie in dit artikel is van toepassing op:
  • Microsoft Office Excel 2007
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
Trefwoorden: 
kbhowtomaster kbmt KB245104 KbMtnl
Automatisch vertaald artikel
BELANGRIJK: Dit artikel is vertaald door de vertaalmachine software van Microsoft in plaats van door een professionele vertaler. Microsoft biedt u professioneel vertaalde artikelen en artikelen vertaald door de vertaalmachine, zodat u toegang heeft tot al onze knowledge base artikelen in uw eigen taal. Artikelen vertaald door de vertaalmachine zijn niet altijd perfect vertaald. Deze artikelen kunnen fouten bevatten in de vocabulaire, zinsopbouw en grammatica en kunnen lijken op hoe een anderstalige de taal spreekt en schrijft. Microsoft is niet verantwoordelijk voor onnauwkeurigheden, fouten en schade ontstaan door een incorrecte vertaling van de content of het gebruik ervan door onze klanten. Microsoft past continue de kwaliteit van de vertaalmachine software aan door deze te updaten.
De Engelstalige versie van dit artikel is de volgende:245104

Geef ons feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com