1900 Excel에서 1 1 전에 나이를 계산하는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 245104 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

이 페이지에서

요약

Microsoft Excel에서 날짜 수식을 날짜 사이에 입력한 경우에만 사용할 수 있지만 1 1900년 및 12/31/9999, 응용 프로그램 함수에 대한 사용자 지정 Microsoft Visual Basic 누군가가 또는 뭔가 년) 에서 먼저 1900년 1월 1일 전에 만든 나이를 계산할 수 있습니다.

매크로를 사용하여 나이 계산

Microsoft는 묵시적인 보증 없이 목적으로만 프로그래밍 예제를 제공합니다. 이 포함되지만, 상품성 또는 특정 목적에의 적합성에 대한 묵시적인된 보증이 제한되지 않습니다. 이 문서에서는 만들려면 및 프로시저를 디버깅하는 데 사용되는 도구 및 여기서 설명하는 프로그래밍 언어에 익숙한 사용자를 대상으로 합니다. Microsoft 지원 엔지니어는 사용자에게 도움이 되도록 특정 절차에 대한 기능을 설명할 수 있지만 추가 기능을 제공하거나 특정 요구 사항에 맞도록 프로시저를 구성하지는 이 예제를 수정하지 않습니다.
Excel 1 1900년 이전 날짜가 텍스트로 입력됩니다. 이 함수는 1/1/0001로 시작하는 텍스트 입력한 날짜, 표준 날짜 및 수 사용할 때 시작 날짜를 1900 전에 있고 날짜 종료 후 1900 날짜 처리합니다. 매크로를 사용하려면 다음 이 단계를 수행하십시오.
  1. Excel을 시작하십시오. 함수를 사용하여 워크시트를 봅니다.
  2. Visual Basic Editor 전환하려면 Alt + F11 키를 누릅니다.
  3. 삽입 메뉴에서 모듈 을 클릭하십시오.
  4. 모듈에 다음 코드를 입력합니다:
    ' 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. 파일을 저장하십시오.
  6. 다음 데이터를 입력하십시오.
    A1   01/01/1887
    A2   02/02/1945
    						
    A3 셀에 다음 수식을 입력하십시오
    = AgeFunc(startdate,enddate)
    여기서 startdate 첫 번째 날짜 (A1) 셀 참조인 및 enddate 두 번째 날짜 (A2) 셀 참조입니다.

    결과는 58 합니다.
참고: 1 1900년 전에 모든 날짜에 대한 유효성 검사하십시오. 날짜를 입력한 텍스트 Excel에 의해 확인됩니다.

참조

이 문서에 나와 있는 예제 코드를 사용하는 방법에 대한 자세한 내용은 아래 문서 번호를 눌러 Microsoft 기술 자료에 있는 문서를 클릭하십시오.
212536기술 자료 문서의 예제 코드를 실행하는 방법

속성

기술 자료: 245104 - 마지막 검토: 2007년 1월 25일 목요일 - 수정: 5.1
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
키워드:?
kbmt kbhowtomaster KB245104 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

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