Excel EOMONTH 함수 사용법 — 월말일 계산 가이드

빠른 바로가기
- EOMONTH 구문
- 미래의 월말일 계산하기
- 과거 월말일 계산하기
- 장기(연 단위 포함) 월말일 계산하기
- 현재 월의 월말일 계산하기
- 월말일 시퀀스 생성하기
- 자주 발생하는 문제와 해결법
- 실무 체크리스트 및 테스트 케이스
EOMONTH의 핵심 개념
한 줄 정의: EOMONTH는 기준일에서 N개월 이동한 달의 마지막 날짜를 반환하는 함수입니다.
핵심 사고 모델: “달을 먼저 이동한 뒤, 그 달의 마지막 날로 점프한다.” 예를 들어 기준일이 2025-01-04이고 +3개월이면 2025-04-04로 이동한 뒤 2025-04-30을 반환합니다.
중요: EOMONTH는 날짜의 일(day) 값을 유지하려고 하지 않습니다. 항상 해당 월의 마지막 날짜를 반환합니다. “같은 일자 유지“가 필요하면 EDATE를 사용합니다.
EOMONTH 구문
=EOMONTH(a,b)- a: 시작일. 셀 참조, DATE 함수, 또는 TODAY() 같은 함수 결과를 넣을 수 있습니다.
- b: 시작일 기준으로 이동할 개월 수. 양수는 미래, 음수는 과거, 0은 같은 달의 월말.
예시 표(설명용):
| 인수 a | 설명 |
|---|---|
| =EOMONTH(A1, | 시작일이 셀 A1에 들어있음 |
| =EOMONTH(DATE(2025,05,31), | 시작일을 2025년 5월 31일로 지정 |
| =EOMONTH(TODAY(), | 시작일을 오늘 날짜로 지정 |
b 인수 예시:
| 인수 b | 설명 |
|---|---|
| =EOMONTH(A1, 5) | 시작일 A1에서 5개월 앞으로 이동한 달의 말일 반환 |
| =EOMONTH(A1, -5) | 시작일 A1에서 5개월 뒤로 이동한 달의 말일 반환 |
| =EOMONTH(A1, 0) | 시작일이 속한 달의 말일 반환 |
| =EOMONTH(A1, A2) | A2에 있는 숫자만큼 앞으로 이동한 달의 말일 반환 |
| =EOMONTH(A1, -A2) | A2에 있는 숫자만큼 뒤로 이동한 달의 말일 반환 |
참고: EOMONTH의 결과는 날짜 직렬 번호(Excel 내부 숫자)로 반환됩니다. 표시 형식을 날짜로 설정해야 사람이 읽을 수 있는 날짜로 보입니다.
미래의 월말일 계산하기
실무 예: 건설 프로젝트 관리자이며 각 과제는 개월 단위로 소요되고, 마감일은 항상 월말이라고 가정합니다. 각 과제의 시작일과 기간(개월)이 주어졌을 때 마감 월말을 자동으로 계산하려면 EOMONTH를 사용합니다.
예시 절차(테이블이 Excel 표 형식으로 정리된 경우):
- E열(End date)에 아래 수식을 넣습니다.
=EOMONTH([@[Start date]],[@Months])- 표(Excel Table)라면 첫 셀에 수식 입력 후 자동 채우기 됩니다. 일반 범위라면 채움 핸들을 사용해 아래로 드래그하세요.
실행 결과: 시작일이 2025-01-04이고 Months가 3이면 반환값은 2025-04-30입니다.
이 방식의 장점:
- 각 행의 데이터에 따라 동적 계산이 이루어짐
- 기간 또는 시작일 변경 시 수식을 바꾸지 않고 값만 수정하면 됨
과거의 월말일 계산하기
EOMONTH는 기준일로부터 과거의 월말일도 계산할 수 있습니다. 예를 들어, 프로젝트 기간이 5개월이고 마감일로부터 역산해서 여유를 한 달 더 둔다면 시작해야 하는 월말일을 구할 수 있습니다.
예시 수식(Deadline이 E열, Months가 B열인 경우):
=EOMONTH([@Deadline],-[@Months]-1)설명:
- -[@Months]는 마감일로부터 소요 개월만큼 뒤로 이동
- 추가로 -1을 해서 한 달 더 여유를 둠
- EOMONTH가 해당 달의 마지막 날짜를 반환
예: 마감일이 2026-01-27이고 Months가 5이면, 식은 2025-07-31을 반환합니다.
연 단위를 포함한 장기 계산
EOMONTH는 달 단위 연산만 지원하기 때문에 연 단위로 이동하려면 연수 × 12를 사용합니다.
예:
=EOMONTH([@[Start date]],[@Years]*12)역으로 뒤로 가려면 음수 부호를 붙입니다.
=EOMONTH([@[Start date]],-[@Years]*12)예: 시작일 2025-01-04, Years = 2이면 결과는 2027-01-31입니다.
현재 월의 월말일과 남은 일수 계산
이번 달의 남은 일수를 구하려면 TODAY 함수와 결합합니다.
=EOMONTH(TODAY(),0)-TODAY()설명:
- EOMONTH(TODAY(),0)은 현재 월의 마지막 날짜(직렬 번호)를 반환
- TODAY()는 오늘 날짜(직렬 번호)를 반환
- 차이를 계산하면 남은 일수
주의: 셀 서식이 날짜로 지정되어 있으면 날짜 형태로 보일 수 있으므로 셀 서식을 “일반(General)” 또는 숫자로 변경하세요.
예를 들어 예산에서 일일 사용 가능액을 계산하려면 총 여유금액을 남은 일수로 나누면 됩니다:
=B6/B1(상황에 따라 B6는 남은 예산, B1은 남은 일수 등)
SEQUENCE와 결합해 월말일 시퀀스 생성하기
동적 배열 함수인 SEQUENCE를 사용하면 연속된 월말 날짜 배열을 쉽게 만들 수 있습니다. 예:
=EOMONTH(DATE(2024,12,31),SEQUENCE(12))해석:
- DATE(2024,12,31)은 기준일(여기서는 2024-12-31). EOMONTH는 다음 달(즉 2025년 1월)부터 시작해 SEQUENCE가 만든 인덱스 값(1,2,…,12)에 따라 월말을 반환합니다.
2개월 간격으로 반환하려면:
=EOMONTH(DATE(2024,12,31),SEQUENCE(6,,,2))분기별(3개월 간격):
=EOMONTH(DATE(2025,2,28),SEQUENCE(4,,,3))주의:
- SEQUENCE가 반환하는 동적 배열은 표(Excel Table)와 호환되지 않습니다. 일반 셀에만 사용하세요.
- 결과를 고정하려면 범위를 복사(Ctrl+C)한 뒤 값만 붙여넣기(Ctrl+Shift+V 또는 마우스 우클릭 > 값 붙여넣기)를 하세요.
자주 발생하는 문제와 해결법
중요: 다음 항목들은 실무에서 자주 마주치는 오류와 주의사항입니다.
- 잘못된 입력 유형
- 문제: 시작일(a)에 날짜가 아닌 텍스트가 들어가 있는 경우 #VALUE! 오류 또는 잘못된 결과가 나옵니다.
- 해결: DATEVALUE 또는 DATE 함수를 사용해 확실히 날짜로 변환하거나, 셀 서식을 확인하세요.
- 1900년/1904년 날짜 시스템
- 문제: Excel 파일의 날짜 시스템이 1900 또는 1904 모드인지에 따라 직렬 번호 해석이 달라질 수 있습니다. (특히 Mac에서 1904 기반 파일을 다룰 때)
- 해결: 파일 > 옵션 > 고급 > 날짜 시스템 확인 후 일관성 유지. 다른 사용자와 파일을 주고받는 경우 날짜 시스템 일치 여부 확인하세요.
- 음수 또는 매우 큰 이동값
- 문제: b 인수에 음수나 큰 숫자를 넣으면 의도하지 않은 연도 이동이 발생합니다.
- 해결: Months 또는 Years 컬럼 값 범위를 검증(예: 데이터 유효성 검사)하고, 극단적 값에 대한 방어 코드를 넣으세요.
- 표(Table)와 동적 배열의 충돌
- 문제: SEQUENCE 등 동적 배열 수식은 Excel Table 내부에서 스필(spill)되지 않습니다.
- 해결: 동적 배열 수식은 표 바깥의 셀에 작성하거나, 결과를 값으로 붙여넣은 뒤 표로 변환하세요.
- 날짜 표시 형식
- 문제: EOMONTH 결과가 날짜로 보이지 않고 숫자로 보이거나 반대로 날짜로 보이는데 연산이 필요한 경우 문제가 발생할 수 있습니다.
- 해결: 필요한 경우 TEXT 함수로 포맷하거나 셀 서식을 적절히 설정하세요. 예: =TEXT(EOMONTH(A1,1),”yyyy-mm-dd”)
EOMONTH가 잘 맞지 않을 때: 대안과 팁
- 같은 일자를 유지해서 월 단위 이동이 필요하면: EDATE(시작일, 개월수)
- 특정 조건(예: 영업일 기준 월말)으로 계산해야 하면: WORKDAY, EOMONTH, NETWORKDAYS 등을 조합
- 분기 말이 아니라 특정 회계 처리 기준일(예: 매월 25일)이 필요하면: DATE 함수와 DAY 비교로 커스텀 규칙 작성
대체 예시(같은 일자 유지):
=EDATE(A1,3) // A1의 같은 일자에서 3개월 뒤 날짜영업일 기준 월말(예: 해당 월의 마지막 영업일 계산) 예시 아이디어:
- 월말 찾기: EOMONTH(A1,0)
- 마지막 영업일은 WORKDAY(EOMONTH(A1,0)+1,-1)로 계산 가능
=WORKDAY(EOMONTH(A1,0)+1,-1)실무 도입용 미니 방법론(Workbook 적용 SOP)
- 요구 정의
- 어떤 기준일이 필요한가?(예: 청구 마감일, 프로젝트 시작/종료, 보고서 기준일)
- 월말 기준인가? 혹은 분기말/회계기준일인가?
- 데이터 표준화
- 날짜 칼럼은 모두 날짜 형식으로 통일
- 개월수/연수 칼럼은 정수로 제한(데이터 유효성 검사 적용)
- 함수 설계
- 단일 프로젝트 행에 대해 EOMONTH/EDATE 선택
- SEQUENCE 사용이 필요하면 일반 범위에 배치
- 검증 & 테스트
- 테스트 케이스(아래 섹션 참조)로 경계값 확인
- 롤아웃
- 시트 내 설명 칸(주석) 추가
- 사용자를 위한 간단 가이드 및 예시 2~3개 삽입
- 유지보수
- 날짜 시스템(1900/1904) 검사
- 테이블 구조 변경 시 수식 영향 검토
역할별 체크리스트
프로젝트 매니저
- 시작일과 기간(개월)을 표준화했는가?
- EOMONTH로 계산된 마감일을 팀과 공유했는가?
- 변경 시 수식이 동작하는지 테스트했는가?
재무/회계
- 회계 기간(분기/반기/연도)에 맞춰 EOMONTH 또는 DATE 조합을 적용했는가?
- 영업일 기준이 필요하면 WORKDAY 조합을 고려했는가?
데이터 분석가
- 동적 배열(SEQUENCE)로 생성된 날짜 범위를 데이터 파이프라인에서 잘 처리하는가?
- 날짜 직렬 번호 대신 명확한 문자열 포맷(TEXT)으로 변환해야 하는 곳은 없는가?
소프트웨어/시스템 관리자
- 파일을 다른 사용자와 공유할 때 날짜 시스템(1900/1904)을 고려했는가?
테스트 케이스와 인수 기준
테스트 케이스(입력 -> 기대 결과):
- 입력: 시작일 2025-01-04, b=3 -> 기대: 2025-04-30
- 입력: 시작일 2024-01-31, b=1 -> 기대: 2024-02-29(윤년 고려)
- 입력: 시작일 2023-01-31, b=1 -> 기대: 2023-02-28
- 입력: 시작일 2025-12-15, b=-6 -> 기대: 2025-06-30
- 입력: START가 텍스트(“2025-05-10”) -> 기대: 자동 변환 또는 오류 처리
- SEQUENCE 사용: DATE(2024,12,31),SEQUENCE(12) -> 기대: 2025년 1월부터 12월까지 월말 배열
인수 기준(수용 기준):
- 주어진 모든 정상 케이스에서 EOMONTH는 기대 월말을 정확히 반환해야 한다.
- 윤년(2월 29일)과 월 말이 30/31일인 경우 올바르게 처리되어야 한다.
- 비정상 입력(텍스트, 빈 셀)은 예외 처리 로직 또는 사용자 안내 메시지를 통해 처리되어야 한다.
치트 시트: 자주 쓰는 수식 모음
- 같은 달의 월말:
=EOMONTH(A1,0)- n개월 뒤의 월말:
=EOMONTH(A1,n)- n개월 전의 월말:
=EOMONTH(A1,-n)- n년 뒤의 월말:
=EOMONTH(A1,n*12)- 이번 달 남은 일수:
=EOMONTH(TODAY(),0)-TODAY()- 동적 월말 시퀀스(1년):
=EOMONTH(DATE(2024,12,31),SEQUENCE(12))- 동적 격월 시퀀스(6개):
=EOMONTH(DATE(2024,12,31),SEQUENCE(6,,,2))- 마지막 영업일(월말의 영업일):
=WORKDAY(EOMONTH(A1,0)+1,-1)- 날짜를 문자열로 고정 포맷:
=TEXT(EOMONTH(A1,3),"yyyy-mm-dd")결정 트리: 어떤 함수를 쓸까?
flowchart TD
A[날짜를 월 단위로 이동할 필요가 있나요?] -->|예| B{같은 '일'을 유지하길 원하나요?}
A -->|아니오| Z[함수 불필요]
B -->|예| C[EDATE'시작일, 개월수']
B -->|아니오| D[EOMONTH'시작일, 개월수']
D --> E{영업일 기준이 필요한가요?}
E -->|예| F[WORKDAY 또는 NETWORKDAYS 조합]
E -->|아니오| G[결과는 EOMONTH 사용]엣지 케이스 갤러리(주요 예외 상황)
- 입력 날짜가 월말인 경우: EOMONTH(A1,0)은 여전히 그 달의 월말을 반환(변화 없음).
- 1월 31일에서 1개월 이동: 윤년 여부에 따라 2월 28일 또는 29일을 반환.
- 음수의 큰 값(예: -1200): 100년 전의 월말까지 계산되므로 데이터 유효성 검사 필요.
현지화 및 한국 로컬 팁
- 날짜 표시: 한국에서는 일반적으로 “yyyy년 m월 d일” 또는 “yyyy-mm-dd” 형식을 사용합니다. 보고서 목적이면 TEXT 함수로 포맷을 고정하세요.
- 근무일 기준: 한국의 공휴일을 반영하려면 WORKDAY.INTL 또는 사용자 정의 휴일 목록을 사용해 정확한 영업일 계산을 하세요.
- 회계 기준일: 어떤 기업은 월말 대신 특정 회계 마감일(예: 매월 25일)을 사용합니다. 이 경우 EOMONTH가 아닌 DATE와 DAY 비교 로직으로 커스텀 수식을 만드세요.
보안 및 개인정보 관련 메모
EOMONTH 자체는 개인정보를 수집하거나 외부 서비스와 통신하지 않습니다. 다만 날짜 데이터가 개인식별정보(PII)와 연결되어 있는 경우 해당 통합 문서의 접근 권한을 통제하세요.
요약
- EOMONTH은 기준일에서 개월 수만큼 이동한 달의 마지막 날짜를 반환하는 간단하면서도 강력한 함수입니다.
- EDATE는 “같은 일자 유지“가 필요할 때 사용합니다.
- SEQUENCE와 결합하면 연속된 월말 시퀀스를 쉽게 만들 수 있지만 동적 배열은 표 내부에서 작동하지 않습니다.
- 날짜 시스템(1900/1904), 텍스트 입력, 극단적 이동값 등 일반적인 예외는 미리 검증해 두어야 합니다.
핵심 팁: 표준화된 날짜 형식과 데이터 유효성 검사를 도입하면 EOMONTH 기반 계산은 유지보수하기 쉽고 오류 발생률이 크게 줄어듭니다.











추가 요점: EOMONTH는 날짜를 “월말 기준“으로 맞출 때 가장 유용합니다. 만약 결과로 “같은 일자”가 필요하다면 EDATE를 사용하세요.