CAFE

TIP&CODE

[황기성] 퇴직 예정일자 구하기 - 수정

작성자김선태|작성시간07.05.16|조회수2,626 목록 댓글 0
안녕하세요?
 
날짜 계산은 꽤 까다로운 주제입니다. 퇴직 예정일자도 마찬가지로, 퇴직 규정에 따라 그 계산법이 달라질 수밖에 없습니다.(이 게시물도, 약간의 착오가 있어서 수정했습니다^^;;)
 
오늘은, 게시판에 올라온 질문의 예를 참고로, 퇴직 예정일자를 구하는 하나의 경우를 보도록 하겠습니다.
 
퇴직 예정일자에 관한 함수를 만들어주세요..
 
만 65세의 생년월일이 3월1일부터 익년 8월31일까지는 9월1일자
9월1일부터 익년 2월 28일까지는 2월 1일자 정년퇴임하는것으로 합니다.
 
생년월일 퇴직 예정일
1957년 11월 25일 2021년 2월 1일
1966년 3월 25일 2030년 9월 1일

이란 질문이십니다.
 
이 질문의 핵심은 출생월에 있습니다. 즉 정년이 65세라고 해도, 1월부터 2월생은 65세가 된 2월 1일(즉, 66세), 3월부터 8월생은 그해 9월 1일, 9월 이후 출생자는 다음해(즉 66세) 2월 1일에 퇴직하는 것입니다
 
1957-11-25 2023-02-01 =DATE(YEAR(A1)+VLOOKUP(MONTH(A1),{1,65;9,66},2),VLOOKUP(MONTH(A1),{1,2;3,9;9,2},2),1)
1966-03-25 2031-09-01  

이 경우는 아래와 같은 수식을 이용해 구할 수 있습니다.
 
=DATE(YEAR(A1)+VLOOKUP(MONTH(A1),{1,65;9,66},2),VLOOKUP(MONTH(A1),{1,2;3,9;9,2},2),1)
 
보듯이, 이 함수는 Date 함수를 이용해 날짜를 계산합니다. 퇴직할 해를 계산하는 것은, A1셀에 날짜가 있다면, 이 날짜에, 65를 더하거나 66을 더해 주면 됩니다. 66을 더해주는 경우는 이미 말씀드렸듯, 출생월이 9월 이후일 경우입니다. 그것을 구하기 위해 간단히 Vlookup 함수를 이용한 것입니다.
 
VLOOKUP(MONTH(A1),{1,65;9,66},2)
란, a1 셀의 month(출생월)을 구해 그것이 1월부터 8월은65, 9월 이후는 66을 더해주도록 한 것입니다.
 
퇴직월의 계산도 마찬가지 요령입니다.
VLOOKUP(MONTH(A1),{1,2;3,9;9,2},2)
은, 1월 2월은 2월에, 1월부터 8월은 9월에, 9월 이후는 2월에 퇴직하게 되는 것을 구한 것입니다.
 
if 함수를 이용하거나, 다른 함수를 이용해 이부분을 처리할 수도 있을 것입니다. if 함수를 이용하면 아래와 같이 될 것입니다.
=DATE(YEAR(A1)+IF(MONTH(A1)<=8,65,66),IF(MONTH(A1)<=2,2,IF(MONTH(A1)<=8,9,2)),1)

이 수식은 조금 더 줄이면, 아래와 같이 구하실 수 있습니다.

=DATE(YEAR(A1)+65, VLOOKUP(MONTH(A1),{1,2;3,9;9,14},2 ),1)
=DATE(YEAR(A1)+65, IF(MONTH(A1)<=2,2,IF(MONTH(A1)<=8,9,14)),1)

출생월이 1월부터 2월인 경우는 2월에, 3월부터 8월은 9월에, 그렇지 않은 경우는 14월(다음해 2월)에 퇴직하는 것이므로... 
 
그런데, 질문하신 분은 예는 2021년 2월 1일이고, 제가 구한 결과는 2023년 2월 1일입니다. 왜 2년이나 차이가 있을까요? 저로선 잘 알 수 없는 일입니다만, 정년과 같이 매우 민감한 계산이 틀린다면 매우 곤란할 것입니다.
 
그럼...행운이 있으시길...!
다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
맨위로

카페 검색

카페 검색어 입력폼