|
* 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.
- 엑셀 버전(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 |
|