OfficeTutor.com
배움터 나눔터 교육센터 오튜장터
 통합검색  
  Home > 나눔터 > 엑셀 > 묻고답하기
엑셀
워드
액세스
파워포인트
아웃룩
프런트페이지
인포패스
원노트
비지오
쉐어포인트
포토드로우
퍼블리셔
오피스공통
MVP 안내
MVP 명예의 전당
MVP 카페

 

 

 

 
엑셀에 대한 질문과 답변을 올려주세요. 단, 취지에 맞지 않는 글은 운영자가 삭제합니다.
 "000 님, 도와주세요", "부탁 드립니다.", "급합니다!" 등과 같이 막연한 제목을 달지 말아주세요.
[필독] 빠르고 정확한 답변을 얻는 16가지 Tip !
[필독] 저작권법 개정에 따른 이용안내
작성자:  

 dew (dewdrop)

추천:  0
파일:     조회:  32
제목:   [RE]날짜 사이의 기간 추출하기
     
  * 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.

 - 엑셀 버전(95,97,2000,xp,2003,2007):

* 아래줄에 질문을 작성하세요 >>

생년월일 1990-09-25
취업일 2018-09-27
==================
취업연령 28년 0개월 2일--------(1)

군대입대 2013-02-05
군대제대 2016-11-19
================
병역기간 3년 9개월 14일

28년 0개월 2일 - 3년 9개월 14일 = 병역차감 후 나이------(2)

ㅡㅡ (1)번과 (2)번에 들어갈 수식에 대해 알고 싶어요,  1번은 어떻게 하긴 했는데 너무 복잡해져 버렸고 2번은 그나마 안되네요,  고수님들 부탁드립니다.
==============[협객님 글에 대한 답변입니다]==============

(1) =DATEDIF(생년월일, 취업일, "Y") & "년 " & DATEDIF(생년월일, 취업일, "YM")  & "개월 " & DATEDIF(생년월일, 취업일, "MD") & "일"
    =DATEDIF(군대입대, 군대제대, "Y") & "년 " & DATEDIF(군대입대, 군대제대, "YM")  & "개월 " & DATEDIF(군대입대, 군대제대, "MD") & "일"
(2) 아래 사용자 정의함수을 이용
    =DateDifference(생년월일, 취업일, 군대입대, 군대제대)

' 병역기간 년월수가 취업연월수에 포함되어 있는 경우
Function DateDifference(dat1, dat2, dat3, dat4)
    Dim d1 As Date, d2 As Date, d3 As Date, d4 As Date
    Dim iYear1 As Integer, iMonth1 As Integer, iDay1 As Integer
    Dim iYear2 As Integer, iMonth2 As Integer, iDay2 As Integer
    Dim iYear3 As Integer, iMonth3 As Integer, iDay3 As Integer
    Dim iTmp As Integer
    Dim vDate As Range

    Application.Volatile
    
    Set vDate = Union(dat1, dat2, dat3, dat4)
    d1 = WorksheetFunction.Small(vDate, 1)
    d2 = WorksheetFunction.Small(vDate, 2)
    d3 = WorksheetFunction.Small(vDate, 3)
    d4 = WorksheetFunction.Small(vDate, 4)
    
    iYear1 = Year(d2) - Year(d1)
    iMonth1 = Month(d2) - Month(d1)
    iDay1 = Day(d2) - Day(d1)
    
    iTmp = Day(DateSerial(Year(d2), Month(d2), 0))  '큰 날짜의 월의 일수
    If iDay1 < 0 Then
        iMonth1 = iMonth1 - 1
        iDay1 = iDay1 + iTmp
    End If
    If iMonth1 < 0 Then
        iYear1 = iYear1 - 1
        iMonth1 = iMonth1 + 12
    End If
    
    iYear2 = Year(d4) - Year(d3)
    iMonth2 = Month(d4) - Month(d3)
    iDay2 = Day(d4) - Day(d3)
    
    iTmp = Day(DateSerial(Year(d4), Month(d4), 0))  '큰 날짜의 월의 일수
    If iDay1 < 0 Then
        iMonth1 = iMonth1 - 1
        iDay1 = iDay1 + iTmp
    End If
    If iMonth1 < 0 Then
        iYear1 = iYear1 - 1
        iMonth1 = iMonth1 + 12
    End If

    iYear3 = iYear1 + iYear2
    iMonth3 = iMonth1 + iMonth2
    iDay3 = iDay1 + iDay2
    
    iTmp = Day(DateSerial(Year(d4), Month(d4) + 1, 0))  '큰 날짜의 월의 일수
    If iDay3 > iTmp Then
        iDay3 = iDay3 - iTmp
        iMonth3 = iMonth3 + 1
    End If
    If iMonth3 > 12 Then
        iMonth3 = iMonth3 - 12
        iYear3 = iYear3 + 1
    End If
    
    DateDifference = iYear3 & "년 " & iMonth3 & "개월 " & iDay3 & "일"
End Function
 
[불량 게시물 신고]  
        
  

작성일 : 2018-11-07(16:52)
최종수정일 : 2018-11-07(16:52)
 


 ◎ 관련글

  제 목   작성자   날짜
날짜 사이의 기간 추출하기 협객 2018-11-07
[RE]날짜 사이의 기간 추출하기 dew 2018-11-07

 
 
회사소개 | 이용약관 | 개인정보 처리방침 | 회원정보수정 | 교육신청 및 문의 | 이메일무단수집거부 위로

오피스튜터 블로그 오피스튜터페이스북 오피스튜터유투브
110-722 서울 종로구 세종대로23길 47, 601-74 ㈜오피스튜터 ☎1544-4102 대표이사 : 전경수
개인정보관리책임자 : 이희진(privacy@officetutor.com) 사업자등록번호 120-86-14501
통신판매업신고 2013-서울종로-0547
norton
Copyright ⓒ OfficeTutor.com 이 페이지의 저작권은 ㈜오피스튜터와 콘텐츠 제공자에게 있습니다. 무단 복제를 금합니다.
Microsoft 및 Office 로고는 미국, 대한민국 및/또는 기타 국가에서의 Microsoft Corporation 등록 상표 또는 상표입니다.