목차▾
엑셀 EDATE 함수란?
엑셀 EDATE 함수는 시작 날짜에서 N개월 후/전의 같은 일자를 반환하는 날짜 함수입니다. 보험 만기일(6개월·1년·3년 후), 정기 결제일, 적금 만기, 정년 퇴직일, 구독 갱신 등 "N개월 뒤 같은 날짜" 패턴에 사용해요.
구문은 =EDATE(시작날짜, 개월수) 2인수. 개월수가 양수면 미래, 음수면 과거. 가장 중요한 특징은 같은 일자가 존재하지 않으면 해당 월의 마지막 일자로 자동 조정한다는 점입니다 (예: 1/31 + 1개월 = 2/28).
동작 규칙 — 월말 자동 조정
월말 일자 자동 처리가 핵심. 의도와 다를 수 있으니 확인 필요.
| start_date | months | 결과 | 비고 |
|---|---|---|---|
| 2026-06-25 | 1 | 2026-07-25 | 동일 일자 |
| 2026-06-25 | 12 | 2027-06-25 | 1년 후 |
| 2026-06-25 | -3 | 2026-03-25 | 3개월 전 |
| 2026-01-31 | 1 | 2026-02-28 | 2월에 31일 없음 → 28일 |
| 2024-01-31 | 1 | 2024-02-29 | 윤년 → 29일 |
| 2026-03-31 | -1 | 2026-02-28 | 2월말로 조정 |
EDATE vs EOMONTH vs DATE
| 함수 | 동작 | 사용 |
|---|---|---|
| EDATE(date, n) | n개월 후 같은 일자 | 만기일, 정기 결제 |
| EOMONTH(date, n) | n개월 후 월말 | 청구 마감, 월말 보고 |
| DATE(y, m+n, d) | 직접 계산 (오버플로 자동) | 유연한 처리 |
EDATE("2026-01-15", 1) = 2026-02-15
EOMONTH("2026-01-15", 1) = 2026-02-28
DATE(2026, 2, 15) = 2026-02-15 (EDATE와 동일)
실전 사용 시나리오 8가지
- 1년 만기일 —
=EDATE(가입일, 12) - 6개월 무료 체험 종료 —
=EDATE(가입일, 6) - 1 - 보험 갱신일 —
=EDATE(시작일, 갱신주기) - 정년 퇴직일 (만 60세) —
=EDATE(생년월일, 60*12) - 정기 결제일 12개월 —
=EDATE(첫결제일, ROW()-1) - N개월 전 —
=EDATE(TODAY(), -6) - 분기 시작일 —
=EDATE(연초, (분기-1)*3) - 만기까지 개월 수 —
=DATEDIF(TODAY(), 만기일, "M")
DATEDIF "MD" 버그 대안 패턴
DATEDIF "MD"는 Microsoft가 공식 인정한 버그가 있습니다 (시작일 일자 > 종료일 일자 시 음수·잘못된 결과). EDATE로 우회:
=B1 - EDATE(A1, DATEDIF(A1, B1, "M"))
A1에서 정확히 M개월 뒤로 이동 후 B1과의 일수 차이. 정확한 "남은 일수" 계산. "N년 M개월 D일" 표시 시 D 부분만 이 패턴으로 대체하면 안전.
자주 발생하는 오류·함정 5가지
- 결과가 시리얼 번호로 표시 — EDATE는 숫자(시리얼) 반환. 셀 서식 → 날짜로 변경 필수
- 월말 자동 조정 의외성 — 1/31 + 1개월 = 2/28. 사용자가 2/31을 기대 안 하지만 직관 vs 자동 처리 차이
- 텍스트 날짜 —
="2026-06-25"텍스트면 #VALUE!. DATEVALUE로 변환 - months 인수가 0 —
EDATE(date, 0)= 그대로 (변화 없음) - 음수와 양수 혼동 — 양수: 미래, 음수: 과거. -12 = 1년 전
자주 묻는 질문
Q. EDATE 함수 사용법은?
=EDATE(시작날짜, 개월수) 형식입니다. 예: =EDATE("2026-06-25", 12) → 2027-06-25 (1년 후 같은 일자). 음수면 과거, 양수면 미래. Excel 2007+에서 지원.
Q. EDATE와 EOMONTH의 차이는?
EDATE는 같은 일자, EOMONTH는 월말 반환. EDATE("2026-01-15", 1) = 2026-02-15, EOMONTH("2026-01-15", 1) = 2026-02-28. 만기일은 EDATE, 청구 마감은 EOMONTH.
Q. 1월 31일에 1개월 더하면 어떻게 되나요?
2월 28일(평년)/29일(윤년)로 자동 조정. 2월에 31일이 없으므로 해당 월의 마지막 일자로 변환. =EDATE("2026-01-31", 1) → 2026-02-28.
Q. 결과가 숫자(45000 같은)로 나와요.
EDATE는 내부적으로 시리얼 번호 반환. 셀 서식 → 날짜로 변경하면 정상 표시. 또는 =TEXT(EDATE(...), "yyyy-mm-dd") 텍스트 변환.
Q. 만 60세 정년 퇴직일은?
=EDATE(생년월일, 60*12) → 720개월 후 = 만 60세 같은 일자. 또는 =DATE(YEAR(생년월일)+60, MONTH(생년월일), DAY(생년월일)). EDATE가 윤년·월말 처리 자동이라 안전.
Q. EDATE와 DATE 중 뭐가 좋나요?
EDATE는 개월 단위 이동에 특화, DATE는 유연한 합성. 정기 결제일·만기일은 EDATE, 임의 연·월·일 조합은 DATE. EDATE는 월말 자동 조정이 안전 (1/31 + 1 = 2/28).
Q. N개월 전 날짜는 어떻게?
months 인수에 음수: =EDATE(TODAY(), -6) → 6개월 전 같은 일자. -12면 1년 전.
Q. 구글 스프레드시트에서도 동일하게 작동하나요?
네. EDATE는 Google Sheets, LibreOffice Calc, Apple Numbers, 한컴 한셀, WPS에서 동일하게 작동합니다.
본 페이지는 Microsoft Support 공식 EDATE·EOMONTH·DATEDIF 문서를 기준으로 작성되었습니다. 정확한 동작은 Excel 버전·환경에 따라 달라질 수 있으니 중요한 작업 전에는 실제 환경에서 확인하세요.