• 최초 작성일: 2026-08-29
  • 최종 수정일: 2026-08-29
  • 조회수: 274 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: 월말 날짜 자동 계산 필수 함수 — EOMONTH 완벽 활용법

들어가기 전에

마감일이나 만기일을 계산하다 보면 "이번 달 말일이 며칠이지?", "3개월 뒤 월말은 언제지?" 하는 질문을 자주 마주하게 됩니다. 올해 2월이 윤달인지 여부는 말할 것도 없고, 4월·6월·9월·11월처럼 말일이 30일이라는 건 알지만 막상 수식을 작성하려고 하면 손이 멈추기 마련입니다. 이럴 때 날짜에 하루하루 더하거나 빼는 방식으로 접근하면 매우 불편하고 오류가 나기도 쉽습니다.

이런 고민을 한 번에 해결해 주는 함수가 바로 EOMONTH입니다. 이름 그대로 'End Of MONTH', 즉 '월의 끝'을 뜻하는 함수로, 특정 날짜를 기준으로 원하는 개월 수만큼 앞이나 뒤로 이동한 다음 그 달의 마지막 날짜를 곧바로 계산해 줍니다. 직접 날짜를 세거나 윤년 여부를 신경 쓸 필요 없이, 단 하나의 수식으로 정확한 월말 날짜를 얻을 수 있습니다.

엑셀 EOMONTH 함수 활용법
gemini / iexceller

이 글에서는 EOMONTH 함수의 기본 문법부터 시작해서, 프로젝트 마감일 관리, 역산을 통한 시작일 계산, 연 단위 장기 프로젝트 종료일 계산, 이번 달 잔여일 계산, 그리고 SEQUENCE 함수와 결합해 월말 날짜 목록을 한 번에 뽑아내는 방법까지 소개합니다.

[참고] EOMONTH 함수는 기본 Excel 함수이므로 대부분의 Excel 버전에서 사용할 수 있습니다. 다만 이 글에서 함께 소개하는 SEQUENCE 함수는 Microsoft 365, 웹 및 모바일용 Excel에서 사용할 수 있는 동적 배열 함수입니다.
권현욱(엑셀러)
저자: 권현욱(엑셀러), 아이엑셀러 대표

필자는 Excel 컨설턴트, 작가, 그리고 크리에이터입니다. 현재 Microsoft Excel MVP이며, 『챗GPT+엑셀 업무자동화 정석』을 비롯한 10여 권의 도서를 집필했습니다. Excel 자동화 및 생산성 향상 분야에서 25년 넘는 경력을 보유하고 있습니다.

권현욱(엑셀러) 님의 최신 포스트:
  • 최신 글을 불러오는 중...


이 글은 멤버십 회원 우선 공개 콘텐츠입니다. 전체 대상으로는 일주일 후 공개됩니다(작성일 기준).
파워툴스 누적 다운로드 26,493회+ 무료로 받기
파워툴스 for Excel 로고

🚀 파워툴스 마스터클래스

엑셀 리본에 내 도구가 "착" 생기는 강의

26년 경력 Microsoft Excel MVP가, AI에게 말로 지시해 나만의 엑셀 자동화 도구를 만들고 배포하는 방법을 처음부터 끝까지 공개합니다.

  • AI에게 지시해 원하는 기능을 만드는 '엑셀 바이브 코딩'
  • 전통적인 VBA 지식 없이 바로 시작 가능
  • 15개 레슨 + 예제/실습 파일 제공
무료 1강 보기 전체 강의 안내

월말 날짜 자동 계산 필수 함수 — EOMONTH 완벽 활용법

핵심 요약: 마감일 계산을 자동화하는 EOMONTH 함수 활용법

EOMONTH는 날짜를 하루하루 세지 않고도, 몇 개월 전후의 '월말 날짜'를 수식 한 줄로 계산해 주는 함수입니다. 이를 다양한 실무 상황에 적용하는 핵심이 아래 4가지입니다.

  • 마감일 계산: 시작일과 소요 기간을 알면 EOMONTH(시작일, 개월수)로 프로젝트의 최종 마감일(월말)을 바로 구할 수 있습니다.
  • 역산으로 시작일 구하기: 마감일과 여유 기간을 감안해 EOMONTH(마감일, -기간-여유개월)로 늦어도 언제 시작해야 하는지 계산할 수 있습니다.
  • 연 단위 장기 프로젝트 계산: 연도 값에 12를 곱해 개월 수로 환산하면, 같은 함수로 몇 년짜리 프로젝트의 종료월도 계산할 수 있습니다.
  • SEQUENCE와 조합: EOMONTH의 두 번째 인수에 SEQUENCE 함수를 중첩하면, 여러 개의 월말 날짜 목록을 한 번에 배열로 뽑아낼 수 있습니다.

EOMONTH 함수 기본 구조

EOMONTH 함수는 두 개의 인수만 있으면 작동하며, 기본 구문은 다음과 같습니다.

=EOMONTH(a, b)

Excel은 인수 a로 지정한 시작 날짜를 기준으로 인수 b에 지정한 개월 수만큼 앞이나 뒤로 이동한 다음, 그 달의 마지막 날짜를 일련번호로 반환합니다. 결과 값이 숫자로 표시된다면 셀 서식을 '날짜'로 바꿔 주면 됩니다.

인수 a: 시작 날짜

첫 번째 인수는 기준이 되는 '시작 날짜'입니다. 특정 날짜가 입력된 셀을 참조할 수도 있고, DATE 함수나 TODAY 함수처럼 날짜를 만들어 주는 다른 함수를 중첩해서 사용할 수도 있습니다.

예시 설명
=EOMONTH(A1, A1 셀에 입력된 날짜를 시작 날짜로 사용
=EOMONTH(DATE(2025,5,31), 2025년 5월 31일을 시작 날짜로 사용
=EOMONTH(TODAY(), 오늘 날짜를 시작 날짜로 사용

인수 b: 이동할 개월 수

두 번째 인수는 시작 날짜로부터 '몇 개월을 이동할지 지정'합니다. 양수를 입력하면 미래 쪽으로, 음수를 입력하면 과거 쪽으로 이동하며, 0을 입력하면 시작 날짜와 같은 달을 뜻합니다. 직접 숫자를 입력해도 되고, 개월 수가 담긴 셀을 참조해도 됩니다.

예시 설명
=EOMONTH(A1, 5) A1의 시작 날짜로부터 5개월 후 달의 마지막 날짜 반환
=EOMONTH(A1, -5) A1의 시작 날짜로부터 5개월 전 달의 마지막 날짜 반환
=EOMONTH(A1, 0) A1의 시작 날짜가 속한 달의 마지막 날짜 반환
=EOMONTH(A1, A2) A1을 시작 날짜로, A2에 입력된 개월 수만큼 이동한 달의 마지막 날짜 반환
=EOMONTH(A1, -A2) A1을 시작 날짜로, A2의 개월 수만큼 과거로 이동한 달의 마지막 날짜 반환
  • 날짜와 일련번호: EOMONTH의 결과는 내부적으로 날짜 일련번호로 저장되므로, 화면에 숫자만 표시된다면 셀 서식을 날짜 형식으로 바꿔 주어야 합니다.
  • 월 초를 구하고 싶다면: EOMONTH는 항상 '월의 마지막 날'만 반환합니다. 월의 첫날이 필요하다면 EOMONTH 결과에 +1을 하거나, EOMONTH(A1,-1)+1과 같은 방식으로 사용합니다.

1. 미래 월말 날짜 계산하기

EOMONTH 함수가 가장 빈번하게 쓰이는 상황은 미래 특정 달의 마지막 날짜, 즉 마감일을 계산하는 경우입니다.

예를 들어, 어느 회사의 프로젝트 관리자가 직원들에게 프로젝트를 하나씩 배정했다고 가정해 보겠습니다. 각 프로젝트는 완료하는 데 일정한 개월 수가 걸리고, 완료 기한은 언제나 그 달의 말일까지로 정해져 있습니다.

프로젝트별 시작일과 소요기간이 정리된 Excel 표
아이엑셀러

이런 표에서 '마감일(월말)'을 계산하려면 다음과 수식을 사용합니다.

=EOMONTH([@시작일], [@[소요기간(개월)]])

데이터가 Excel 표로 지정되어 있다면 열 머리글을 이용한 구조적 참조가 자동으로 적용되며, 첫 셀(여기서는 H2 셀)에 수식을 입력하는 순간 나머지 행에도 수식이 자동으로 채워집니다.

예를 들어, 시작일이 2025년 4월 5일이고 기간이 18개월인 프로젝트가 있다면, 18개월 후는 2026년 10월 5일이 되고, 그 달의 마지막 날인 2026년 10월 31일이 최종 마감일로 계산됩니다.

날짜와 개월 수를 수식 안에 직접 입력하지 않고 셀 참조를 사용하면 두 가지 장점이 있습니다. 첫째, 각 행마다 서로 다른 시작일과 기간에 맞춰 정확한 결과가 자동으로 계산됩니다. 둘째, 특정 프로젝트의 일정이 바뀌더라도 수식은 그대로 둔 채 시작일이나 기간이 담긴 셀 값만 수정하면 되므로 유지·관리하기가 훨씬 편리해집니다.

2. 마감일 역산으로 시작일 구하기

EOMONTH 함수는 반대 방향, 즉 마감일을 기준으로 몇 개월 전 달의 마지막 날짜를 구하는 데에도 유용하게 쓰입니다. 말로는 다소 헷갈릴 수 있으니 구체적인 예로 살펴보겠습니다.

여러 개의 프로젝트가 정리된 표가 있고, 각 담당자가 마감일을 맞추려면 늦어도 언제까지 프로젝트를 시작해야 하는지 알아내야 하는 상황이라고 가정해 보겠습니다. 여기에 더해, 프로젝트를 진행하다가 돌발 상황이 생길 것을 대비해 여유 기간까지 확보하고 싶습니다.

구체적으로 프로젝트 기간이 5개월이라면, 마감일로부터 6개월 전 달(즉, 실제 소요 기간 5개월에 여유분 1개월을 더한 6개월 전)의 말일을 구해야 합니다. 이를 위해 다음 수식을 입력합니다.

=EOMONTH([@[마감일(월말)]], -[@[소요기간(개월)]]-[@[여유기간(개월)]])
EOMONTH 함수로 '최소시작일' 계산
아이엑셀러

이 수식을 하나씩 뜯어보면, [@[마감일(월말)]]은 각 행의 마감일을 참조하고, -[@[소요기간(개월)]]은 프로젝트 기간만큼 과거로 이동하며, -[@[여유기간(개월)]]을 통해 프로젝트마다 별도로 지정한 여유 기간만큼 한 번 더 앞당깁니다. 여유 기간은 프로젝트 성격에 따라 0개월(여유 없이 빠듯하게 진행)부터 2개월(리스크가 큰 프로젝트)까지 행마다 다르게 지정할 수 있습니다.

예를 들어 마감일이 2026년 1월 27일이고 프로젝트 기간이 5개월인 경우를 살펴보겠습니다. 먼저 마감일에서 5개월을 거슬러 올라가면 2025년 8월이 되고, 여기서 한 달을 더 앞당기면 2025년 7월이 됩니다. EOMONTH는 이 2025년 7월의 마지막 날짜인 2025년 7월 31일을 반환합니다. 결과적으로 담당자는 늦어도 2025년 7월 31일에는 프로젝트를 시작해야 계획된 마감일까지 여유를 두고 5개월짜리 작업을 완료할 수 있다는 뜻이 됩니다.

3. 연 단위 장기 프로젝트의 종료일 계산하기

지금까지는 몇 개월 정도의 비교적 짧은 기간을 이동하는 경우를 살펴봤다면, 이번에는 1년, 2년처럼 훨씬 긴 기간이 걸리는 장기 프로젝트를 다뤄보겠습니다. 앞서 사용한 예제 표를 보면 소요기간(개월) 열에 18개월, 24개월처럼 1년이 넘는 값이 이미 포함되어 있는 것을 확인할 수 있습니다. 이런 경우에도 EOMONTH 함수만으로 문제없이 종료월의 말일을 계산할 수 있습니다.

예를 들어 예제 표의 PRJ-2025001 프로젝트는 시작일이 2025년 4월 5일이고 소요기간이 18개월로 입력되어 있습니다. 이 값을 그대로 EOMONTH의 두 번째 인수로 사용하면 됩니다.

=EOMONTH([@시작일], [@[소요기간(개월)]])

소요기간(개월) 열이 이미 '개월' 단위로 관리되고 있기 때문에, 몇 개월짜리 프로젝트든 몇 년짜리 프로젝트든 같은 수식을 그대로 적용할 수 있다는 점이 이 표 구조의 장점입니다. 실제로 PRJ-2025001의 경우 시작일인 2025년 4월 5일로부터 18개월 후인 2026년 10월로 이동한 다음, 그 달의 마지막 날짜인 2026년 10월 31일이 마감일로 계산됩니다.

  • 기간을 '연 단위'로 입력받는 경우: 만약 원본 데이터에서 프로젝트 기간을 개월이 아니라 연도(예: 2년, 3년) 단위로 별도 관리하고 있다면, EOMONTH의 두 번째 인수는 반드시 '개월' 수를 받아야 하므로 연도 값에 12를 곱해 개월 수로 변환해 주어야 합니다.
=EOMONTH([@시작일], [@진행연수]*12)

예를 들어 시작일이 2025년 1월 4일이고 진행 기간이 2년인 프로젝트가 있다면, 2년은 24개월에 해당하므로 EOMONTH는 2025년 1월 4일로부터 24개월 후인 2027년 1월 4일로 이동한 다음, 그 달의 마지막 날짜인 2027년 1월 31일을 결과로 반환합니다.

반대로 주어진 연도만큼 과거로 거슬러 올라가고 싶다면, 두 번째 인수 앞에 마이너스(-) 기호만 붙여 주면 됩니다.

=EOMONTH([@시작일], -[@진행연수]*12)

4. 이번 달 남은 일수 계산하기

EOMONTH 함수는 주로 과거나 미래의 특정 달을 계산하는 데 쓰이지만, 현재 진행 중인 달의 마지막 날짜를 구하는 데에도 활용할 수 있습니다.

매월 예산을 별도의 워크시트에 정리해 관리하는 통합 문서를 예로 들어 보겠습니다. 체크박스와 SUMIF 함수로 이미 지출한 금액과 앞으로 지출 예정인 금액을 계산하고 있다면, 여기에 더해 EOMONTH 함수로 이번 달의 남은 일수를 계산하고, 이를 기준으로 하루에 쓸 수 있는 최대 지출 한도를 산출할 수 있습니다.

먼저 월말 날짜에서 오늘 날짜를 빼는 수식으로 이번 달의 남은 일수를 구합니다.

=EOMONTH(TODAY(), 0)-TODAY()
  • EOMONTH(TODAY(),0): 오늘이 속한 달의 마지막 날짜에 대한 일련번호 반환
  • TODAY(): 오늘 날짜에 대한 일련번호 반환

두 날짜를 빼는 계산이다 보니 Excel이 이 결과를 자동으로 날짜 형식으로 표시하는 경우가 있습니다. 하지만 실제로 필요한 것은 '일수'이므로, 셀을 선택한 다음 리본 메뉴의 [홈] 탭 > [표시 형식] 그룹의 드롭다운에서 '일반' 서식을 선택해 순수한 숫자로 바꿔 주면 됩니다.

남은 일수가 계산되었다면, 이제 하루에 사용할 수 있는 예산도 간단한 나눗셈으로 구할 수 있습니다.

=B7/B6

5. SEQUENCE 함수와 결합해 월말 날짜 목록 한 번에 만들기

많은 엑셀 함수가 그러하듯, EOMONTH 함수도 다른 함수와 결합하면 활용도를 높일 수 있습니다. SEQUENCE 함수를 EOMONTH의 두 번째 인수 자리에 중첩해서, 여러 개의 월말 날짜를 배열 형태로 한 번에 뽑아내는 방법도 그런 예에 해당합니다.

SEQUENCE 함수는 다음과 같이 4개의 인수를 가집니다.

=SEQUENCE(a, b, c, d)
  • a: 반환할 행의 개수
  • b: 반환할 열의 개수
  • c: 시퀀스의 첫 번째 값
  • d: 시퀀스의 각 값 사이의 증가폭

인수가 4개 있지만 원하는 결과에 따라 모두 채울 필요는 없습니다. 예를 들어 2025년 한 해의 월말 날짜를 모두 배열로 뽑아내려면 다음과 같이 입력합니다.

=EOMONTH(DATE(2024,12,31), SEQUENCE(12))

SEQUENCE 함수가 1부터 12까지 12행짜리 순번을 만들어 EOMONTH의 두 번째 인수로 차례로 전달하고, EOMONTH는 2024년 12월 31일을 기준으로 매달 하나씩 이동하며 열두 개의 월말 날짜를 배열로 반환하는 원리입니다.

SEQUENCE 함수는 동적 배열을 반환하는 함수라서, 수식을 입력한 하나의 셀을 기준으로 결과가 인접한 셀로 자동으로 퍼져 나갑니다(이것을 '스필(spill)'이라고 부릅니다). 동적 배열 함수는 Excel 표 내부에서는 작동하지 않으므로, 이런 중첩 수식은 반드시 일반 셀 범위에 입력해야 한다는 점을 기억해 두시기 바랍니다.

이번에는 매달이 아니라 2025년 1월 31일부터 시작해서 2개월 간격으로 월말 날짜를 뽑아야 한다고 가정해 보겠습니다. 이 경우 SEQUENCE의 네 번째 인수(증가폭)에 2를 지정하면 됩니다.

=EOMONTH(DATE(2024,12,31), SEQUENCE(6,,,2))

마지막으로, 분기별(3개월 간격) 월말 날짜를 구하려면 다음과 같이 입력합니다.

=EOMONTH(DATE(2025,2,28), SEQUENCE(4,,,3))

여기서 EOMONTH의 시작 날짜는 1분기가 끝나기 한 달 전 날짜를 기준으로 잡았고, SEQUENCE의 첫 번째 인수 4는 결과를 4행으로 반환하라는 뜻이며, 네 번째 인수 3은 각 결과 사이를 3개월(1개 분기) 간격으로 건너뛰라는 의미입니다.

이렇게 EOMONTH와 SEQUENCE를 조합해서 만든 날짜 목록을 이후 다른 용도로 활용하고 싶다면, 해당 범위를 선택한 뒤 Ctrl+C로 복사하고 Ctrl+Shift+V로 '값만 붙여넣기'를 실행하는 것이 좋습니다. 그러면 결과 값이 더 이상 동적 배열 수식에 종속되지 않는 순수한 값으로 바뀌므로, 이후 자유롭게 Excel 표로 지정하거나 다른 서식을 적용할 수 있습니다.

MVP TIP — EOMONTH 핵심 요약

지금까지 다룬 내용 중 실무에서 자주 마주치는 상황과 해결 방법을 표로 정리했습니다.

상황 해결 방법
N개월 후 마감일(월말)을 구하고 싶을 때 EOMONTH(시작일, N)
마감일 기준으로 늦어도 언제 시작해야 하는지 역산할 때 EOMONTH(마감일, -기간-여유개월)
연 단위로 이동해야 할 때 EOMONTH(시작일, 연수*12)
이번 달 남은 일수를 구하고 싶을 때 EOMONTH(TODAY(),0)-TODAY()
여러 개의 월말 날짜를 한 번에 뽑고 싶을 때 EOMONTH(시작일, SEQUENCE(...))
월의 '첫날'을 구하고 싶을 때 EOMONTH(시작일,-1)+1

자주 묻는 질문 (FAQ)

Q1. EOMONTH 함수와 EDATE 함수는 어떻게 다른가요?

두 함수 모두 시작 날짜로부터 지정한 개월 수만큼 이동한다는 점은 같지만, EOMONTH는 이동한 달의 '마지막 날짜'를 반환하는 반면, EDATE는 이동한 달의 '같은 날짜'를 그대로 반환합니다. 즉, 정확히 몇 월 며칠인지가 필요하다면 EDATE를, 그 달의 말일이 필요하다면 EOMONTH를 사용하면 됩니다.

Q2. EOMONTH로 월의 '첫째 날'을 구할 수는 없나요?

EOMONTH 자체는 항상 월의 마지막 날짜만 반환하도록 설계되어 있지만, 전월의 말일을 구한 뒤 여기에 1을 더하는 방식, 즉 =EOMONTH(A1, -1) + 1과 같은 수식으로 우회하면 원하는 달의 첫째 날을 손쉽게 구할 수 있습니다.

Q3. 결과가 날짜가 아니라 이상한 숫자로 표시됩니다. 왜 그런가요?

EOMONTH 함수는 결과를 날짜의 '일련번호'로 반환합니다. 셀 서식이 '일반'이나 '숫자'로 지정되어 있으면 이 일련번호가 그대로 숫자로 표시되므로, 셀 서식을 '날짜' 형식으로 바꿔 주면 정상적인 날짜로 확인할 수 있습니다.

Q4. 2월처럼 매년 마지막 날이 달라지는 달도 정확하게 계산되나요?

EOMONTH는 윤년 여부를 자동으로 판단해서 계산하므로 별도의 예외 처리 없이도 2월은 28일 또는 29일로, 30일까지 있는 달과 31일까지 있는 달도 모두 정확하게 그 달의 마지막 날짜를 반환합니다.

마치며

EOMONTH 함수는 시작 날짜를 기준으로 원하는 개월 수만큼 앞이나 뒤로 이동한 다음, 그 결과 달의 마지막 날짜를 곧바로 계산해 주는 함수입니다. 프로젝트 마감일 산출, 역산을 통한 시작일 계산, 연 단위 장기 일정 관리, 이번 달 잔여일 계산은 물론, SEQUENCE 함수와 결합한 월말 날짜 목록 생성까지, 날짜와 관련된 다양한 업무를 처리할 수 있게 해 줍니다.

실무에서는 월말 날짜를 정확히 구하는 것만큼이나, 같은 날짜(월의 첫째 날 포함)를 다루는 작업도 필요합니다. 몇 개월 후의 '같은 날짜'가 필요하다면 EDATE, 특정 요일을 기준으로 날짜를 계산해야 한다면 WORKDAYNETWORKDAYS, 두 날짜 사이의 기간을 연·월·일 단위로 세밀하게 나눠서 구해야 한다면 DATEDIF 함수도 함께 알아 두면, 날짜와 관련된 대부분의 업무를 자동화할 수 있습니다.