날짜와 시간 데이터 다루기: DATEDIF와 EOMONTH로 근속월수, 마감일 자동 계산
인사팀이나 재무팀, 혹은 프로젝트 관리자라면 매달 월말마다 달력을 펴놓고 손가락으로 날짜를 세어본 경험이 있으실 겁니다. "이 직원 퇴직금 정산해야 하는데 근속연수가 정확히 몇 년 몇 개월이지?", "오늘 결제된 건들의 세금계산서 발행 마감일(다음 달 말일)이 언제더라?"
초보 시절의 저는 엑셀에 날짜를 적어두고도, 그 날짜들끼리 더하거나 뺄 수 있다는 사실을 몰라 스마트폰 달력 앱을 켜놓고 일일이 날짜를 확인하곤 했습니다. 하지만 엑셀에서 '날짜'는 단순한 글자가 아니라 계산이 가능한 '숫자'입니다. 엑셀의 시간 개념만 정확히 이해하면, 복잡한 마감일과 계약 만료일을 1초 만에 자동 계산할 수 있습니다. 오늘은 수작업 달력 계산에서 여러분을 해방해 줄 엑셀 날짜 함수의 양대 산맥, DATEDIF와 EOMONTH에 대해 완벽하게 정리해 드립니다.
1. 엑셀의 비밀: 날짜는 사실 '숫자'입니다
함수를 배우기 전, 반드시 알아야 할 엑셀의 비밀이 하나 있습니다. 엑셀은 1900년 1월 1일을 숫자 '1'로 기억합니다. 따라서 오늘 날짜인 2024년 11월 20일은 1900년 1월 1일로부터 45,616일째 되는 날이므로, 엑셀 내부에서는 '45616'이라는 숫자로 인식하고 있습니다.
이 원리 때문에 날짜끼리 더하고 빼는 사칙연산이 가능합니다. 오늘 날짜가 적힌 셀에 '+7'을 하면 정확히 일주일 뒤의 날짜가 계산되어 나오는 식입니다. 가끔 날짜를 입력했는데 '45616' 같은 이상한 숫자가 뜬다면 에러가 난 것이 아닙니다. 당황하지 말고 단축키 [Ctrl + 1]을 눌러 셀 서식을 '날짜'로만 바꿔주면 다시 우리가 아는 연-월-일 형태로 돌아옵니다.
2. 숨겨진 꿀 함수 DATEDIF: "두 날짜 사이의 기간 구하기"
DATEDIF는 직원의 나이, 근속일수, 프로젝트 진행 기간 등을 계산할 때 쓰는 최고의 함수입니다. 재미있는 점은 엑셀에서 =DATEDIF를 타이핑해도 자동 완성 말풍선이 뜨지 않는다는 것인데, 마이크로소프트가 공식 목록에서 숨겨두었지만 여전히 완벽하게 작동하는 '히든 함수'입니다.
공식:
=DATEDIF(시작일, 종료일, "단위")
여기서 핵심은 마지막에 들어가는 "단위(알파벳)"입니다. 내가 알고 싶은 단위에 따라 결괏값이 마법처럼 바뀝니다.
"Y" (Year): 두 날짜 사이의 꽉 찬 '연도' 차이를 구합니다. (예: 만 나이 계산, 근속 연수)
"M" (Month): 두 날짜 사이의 꽉 찬 '개월 수' 차이를 구합니다. (예: 총 납입 개월 수)
"D" (Day): 두 날짜 사이의 총 '일수' 차이를 구합니다. (예: D-Day 계산)
"YM" (Year Month): 연도를 떼어내고, 남은 '개월 수'만 구합니다. (예: "3년 5개월"에서 5개월을 구할 때 사용)
[실무 적용 예시]
입사일이 A2 셀(2020-01-01), 퇴사일이 B2 셀(2024-03-15)일 때 직원의 총 근속 개월 수를 구하려면?
=DATEDIF(A2, B2, "M") 이라고 입력하면 '50'이라는 개월 수가 정확히 계산되어 나옵니다.
3. 마감일 계산의 마스터 EOMONTH: "이달의 마지막 날 구하기"
EOMONTH(End Of Month)는 실무에서 마감일, 결제일, 계약 만료일 등을 계산할 때 빛을 발하는 함수입니다. 달마다 어떤 달은 30일, 어떤 달은 31일, 윤년의 2월은 29일로 끝나는 등 복잡한 달력의 규칙을 엑셀이 알아서 계산해 줍니다.
공식:
=EOMONTH(시작일, 개월 수)
[실무 적용 예시] 계약일이 C2 셀(2024-05-15)에 적혀 있습니다.
당월 말일 구하기: 세금계산서를 계약한 달의 마지막 날에 끊어야 한다면, 개월 수에 '0'을 넣습니다.
=EOMONTH(C2, 0)→ 결과: 2024-05-31다음 달 말일 구하기: 대금 지급일이 계약일 기준 다음 달 말일이라면, 개월 수에 '1'을 넣습니다.
=EOMONTH(C2, 1)→ 결과: 2024-06-30이전 달 말일 구하기: 계약일의 전달 말일을 구하고 싶다면 마이너스('-1')를 넣습니다.
=EOMONTH(C2, -1)→ 결과: 2024-04-30
4. TODAY() 함수와 섞어 쓰는 자동화 꿀팁
날짜 함수가 진짜 위력을 발휘할 때는 TODAY() 함수와 결합할 때입니다. TODAY()는 괄호 안에 아무것도 넣지 않고 쓰며, 문서를 여는 '오늘 날짜'를 매일 자동으로 업데이트해서 보여줍니다.
이것을 DATEDIF에 응용해 볼까요?
특정 프로젝트의 시작일이 D2 셀에 있고, 오늘까지 며칠째 진행 중인지 매일 자동으로 업데이트되는 표를 만들고 싶다면 이렇게 적으면 됩니다.
=DATEDIF(D2, TODAY(), "D")
이렇게 수식을 걸어두면 매일 아침 엑셀 파일을 열 때마다 결괏값이 오늘 날짜에 맞춰 +1일씩 자동으로 늘어나게 됩니다. 더 이상 달력을 보며 날짜를 고칠 필요가 없는 완벽한 자동화 보고서가 탄생하는 순간입니다.
핵심 요약
엑셀에서 날짜는 1900년 1월 1일을 1로 시작하는 '숫자'이므로 사칙연산(더하기/빼기)이 가능합니다.
DATEDIF(시작일, 종료일, "단위") 함수를 사용하면 두 날짜 사이의 만 나이(Y), 총 개월 수(M), 총 일수(D)를 정확하게 계산할 수 있습니다.
EOMONTH(시작일, 개월 수) 함수는 달마다 다른 말일(28, 30, 31일)을 자동으로 인식하여 이번 달, 다음 달 등의 마지막 날짜(마감일)를 한 번에 찾아줍니다.
다음 편 예고
숫자와 날짜를 다루는 법을 마스터하셨으니, 이제 지저분한 글자들을 예쁘게 다듬을 차례입니다. 다음 8편에서는 다른 시스템에서 다운로드한 엉망진창인 텍스트 데이터를 깔끔하게 잘라내고 분리해 주는 '텍스트 함수의 마술: LEFT, RIGHT, FIND 완벽 가이드'를 다루어 보겠습니다.
독자님을 위한 질문
지금까지 회사 업무를 하시면서 마감일이나 근속 연수를 손으로 일일이 세어보다가 실수했던 아찔한 경험이 있으신가요? 혹시 오늘 배운 함수로 자동화하고 싶은 본인만의 업무가 있다면 댓글로 남겨주세요! 맞춤형 수식을 짜드리겠습니다.
댓글
댓글 쓰기