본문 바로가기
잔머리 엑셀

잔머리 엑셀-생년월일만 입력하면 만나이 알아서 계산하기

by Lv. 35 라이츄 2024. 1. 12.

https://koreanraichu.tistory.com/362

 

파이썬으로 만나이를 계산해보자

아니 이게요... 일하는데 어떤 분이 엑셀로 생년월일 입력하면 만나이 계산 알아서 되는 방법이 있다던데 함수좀 짜달라길래... 속으로 오 씨 콘텐츠 각 이러면서 짰습니다... 이걸 각을 재네 나

koreanraichu.tistory.com

여기서 콘텐츠 각 재고 함수짰다는 그거 맞음... ㅋㅋㅋㅋㅋㅋ 수술 확인서라는게 있는데 나는 뭔지 모름. 일단 내가 하는 업무에 그걸 건드리는 업무는 없으니... 질문 받기 전까지는 있는줄도 몰랐음. 근데 여기서 만나이가 왜 나오느냐... 전에 만나이 설명하면서 썼지만 모든 행정처리는 만나이로 들어간다.

 

우리 병원이 중간에 한 번 이사를 오긴 했지만 업력 자체는 무지하게 길다. 신입사원 교육때 듣기로는 원래 강남역쪽 건물에 세들어있었는데(한두층 쓰고 있었음) 신논현역에 아예 건물 짓고 오신거라고 했음. 그니까 우리 원장님은 갓물주다 이거요. 아무튼, 그렇다보니 거쳐간 환자가 무지하게 많은데... 그니까 환자 입장에서는 제 수술확인서 주세요! 하면 땡인데 이게 한두명이 아닐거란 말이죠? 그러면 이거 어느 세워에 찾아서 생년월일 입력하고 만나이 계산할거임??? 그 시간 애껴서 다른거 하면 능률도 오르고 칼퇴도 하고 좋잖습니까. 그래서 물어봤더니 left랑 mid랑 잘 지지고 볶으라고 힌트만 줬다는거임.

 

그래서 콘텐츠 각 재고 짰습니다. 짜는건 생각보다 금방 짰음.


잔머리 블루프린트

1. 문제: 생년월일만 입력하면 알아서 만나이를 계산하고 싶다...

2. 사용할 함수: LEFT, MID, DATEDIF, TODAY, DATE, YEAR, MONTH, DAY

3. 어떻게: LEFT와 MID를 통해 텍스트로 입력받은 생년월일에서 년 월 일을 추출하고 DATE를 통해 변경, DATEDIF를 통해 현재 날짜를 기준으로 계산한다.

4. 결과가 어떻게 나왔나: 생년월일을 입력하면 알아서 만 나이를 계산해준다.


잔머리를 굴려보자

DATEDIF

그렇다. 본격적으로 함수를 짜기 전에... 한번도 본 적 없는 놈이 나왔다. 바로 DATEDIF. 그럼 이 녀석이 뭐 하는 함수인지부터 찾아보는 게 인지상정 아님? 

 

Microsoft 지원 사이트에서는 DATEDIF에 대해 '두 날짜 사이의 일, 월 또는 연도 수를 계산합니다.'라고 설명해뒀다. (대충 펀쿨섹좌 짤) 아니 설명이 뭐 이래요? ㄹㅇ 이게 다임? 네, 이게 답니다. DATEDIF 함수는 시작 날짜와 끝 날짜를 입력하고 거기서 몇 년("Y"), 몇 개월("M"), 며칠("D")이나 차이나는지를 계산하는 함수이다. 함수를 짤 때는 오늘 날짜가 기준이기때문에 끝 날짜가 TODAY()가 되는 것. 그러니까 투데이는 여기에 쓰인다.

 

만나이 계산하기-날짜 형식

여기서 날짜 형식이라는 건 YYYY-MM-DD형식을 말한다. 뭐 예를 들자면 2002-06-06 이런 거.

 

=DATEDIF(B2,TODAY(),"Y")를 입력하면 바로 만 나이를 계산할 수 있다. 예시에 있는 날짜는 2002년인데 아직 생일이 안 지나서 만으로는 21세인 것을 볼 수 있다.

 

응? 그럼 LEFT랑 MID는 왜 있는거예요? 뭐 장식임? 아니다. 수술 확인서에 있는 날짜 형식을 엑셀은 '텍스트'로 받아들이기 때문에, 여기서 연월일을 분리해서 다시 날짜로 만들기 위해서 필요한 함수다. 즉, 해체 후 재조립. 

 

만나이 계산하기-텍스트 형식

저기에 아까처럼 그냥 =DATEDIF(B2,TODAY(),"Y")를 쓰면 오류가 난다. 왜? 위에도 썼지만, 엑셀은 저걸 날짜가 아니라 텍스트로 받아들이기 때문에 엑셀 입장에서는 미쳤습니까 휴먼? 이 절로 나오는 상황이거든. 그래서 위에서도 말했듯, 해체 후 재조립 과정을 거칠거다. YEAR, MONTH, DAY함수도 그것때문에 필요한 것이다.

 

위 날짜를 함수를 써서 연/월/일에 해당하는 부분으로 해체한 결과. 일의 경우 함수가 두개인데, 가장 오른쪽에 있으므로 MID땜에 머리 굴리기 귀찮으면 걍 RIGHT 함수를 써도 된다. 연도는 가장 앞에 오기 때문에 LEFT 함수를 써서 왼쪽에서부터 네 글자 가져오면 되고, 월은 1이 6번째이므로(점을 잊지 맙시다) 저기 여섯번째 글자부터 두글자 가져와라, 일은 9번째 글자부터 두개 가져와라. 우리 위치 셀 때 점 까먹으면 안된다...

 

뭐야 된 거 맞아요?

 

TEXT함수로 테스트해보니 맞다. 그러면 이제 해체 후 재조립까지 끝났으니 만나이 구하기만 하면 된다.

 

아 우리 용아 만으로 15세구나... (저거 용아 생일임)

 

저걸 근데 왜 다른 셀에서 해체 후 재조립 한 게 아니라 한 줄에 다 때려박았냐면, 이미 정해진 양식이 있고 거기에 있는 만나이 기재란에 계산을 해야 하기 때문이다. 양식 그대로 발급해야 하기 때문에 거기서 더 이상 셀을 추가하거나 지우면 안된다.

 

양식에 만나이는 '만 n 세' 형식으로 표기하도록 되어있기 때문에 앞뒤로 만이랑 세까지 붙여주면 끝이다.

최근댓글

최근글

skin by © 2024 ttutta