엑셀 EOMONTH 함수로 월초 월말 구하기

· 엉클벤 엑셀함수(스프레드시트)

핵심 요약

  • =EOMONTH(A2,0)은 A2가 속한 달의 말일, 1은 다음 달 말일, -1은 지난달 말일입니다.
  • 이번 달 1일은 =EOMONTH(A2,-1)+1, 다음 달 1일은 =EOMONTH(A2,0)+1로 구합니다.
  • 결과가 43616 같은 숫자로 보이면 오류가 아니라 날짜 일련번호이므로 표시 형식을 날짜로 바꿉니다.

한 달은 28일부터 31일까지 길이가 제각각이라, 말일을 수식으로 구하려 하면 달마다 조건을 달아야 할 것 같습니다. 월말 마감일, 다음 달 1일 시작하는 계약 기간, 이번 달 1일부터 말일까지의 합계 기간처럼 월 단위로 날짜를 잘라야 하는 일은 실무에서 자주 나옵니다.

EOMONTH 함수 하나면 달 길이와 윤년을 신경 쓰지 않고 말일을 구할 수 있고, 여기에 1을 더하는 방식으로 월초까지 계산됩니다. 이 글에서는 함수 구조, 월말·월초 수식, 결과가 숫자로 보일 때의 처리, 응용 수식을 차례로 정리합니다.

말일 계산 헷갈리지 마세요 - EOMONTH 월초·월말

EOMONTH 함수 구조

EOMONTH는 End Of Month의 줄임말입니다. 기준 날짜에서 지정한 개월 수만큼 이동한 뒤, 그 달의 마지막 날을 돌려줍니다.

=EOMONTH(start_date, months)
인수뜻예시
start_date기준 날짜. 날짜가 든 셀이나 DATE·TODAY 함수 결과A2, TODAY()
months이동할 개월 수. 0은 같은 달, 양수는 이후, 음수는 이전0, 1, -1

months에 1.5처럼 소수를 넣으면 소수점 아래를 버린 1로 계산합니다. 두 인수 모두 생략할 수 없습니다.

이번 달·다음 달·지난달 말일 구하기

A2에 2019년 5월 6일이 들어 있다고 할 때 months 값에 따른 결과는 다음과 같습니다.

수식결과일련번호
=EOMONTH(A2,0)2019-05-31 (이번 달 말일)43616
=EOMONTH(A2,1)2019-06-30 (다음 달 말일)43646
=EOMONTH(A2,-1)2019-04-30 (지난달 말일)43585
=EOMONTH(A2,12)2020-05-31 (1년 뒤 같은 달 말일)43982

5월은 31일, 6월과 4월은 30일까지라는 점을 함수가 알아서 반영합니다. 윤년도 마찬가지라서 =EOMONTH(DATE(2024,2,10),0)은 2024-02-29를 돌려줍니다. 오늘을 기준으로 삼으려면 =EOMONTH(TODAY(),0)처럼 씁니다.

월초(1일) 구하기

엑셀에는 월초를 바로 구하는 함수가 따로 없습니다. 대신 "어떤 달의 1일은 전달 말일의 다음 날"이라는 점을 이용합니다. 날짜는 일련번호라 1을 더하면 하루 뒤가 됩니다.

구하려는 날짜수식결과(A2=2019-05-06)
이번 달 1일=EOMONTH(A2,-1)+12019-05-01
다음 달 1일=EOMONTH(A2,0)+12019-06-01
지난달 1일=EOMONTH(A2,-2)+12019-04-01

이번 달 1일은 =DATE(YEAR(A2),MONTH(A2),1)로도 구할 수 있습니다. 결과는 같으니 읽기 편한 쪽을 쓰면 되지만, 말일과 1일을 한 표에서 함께 계산한다면 EOMONTH로 통일하는 편이 수식을 비교하기 쉽습니다.

결과가 숫자로 보이거나 오류가 날 때

EOMONTH는 날짜 일련번호를 돌려주기 때문에, 수식을 넣은 셀의 표시 형식이 일반이면 2019-05-31 대신 43616이 보입니다. 계산은 맞았으니 표시 형식만 바꾸면 됩니다.

  1. 결과 셀을 선택합니다.
  2. 홈 탭 > 표시 형식 그룹의 목록 상자를 엽니다.
  3. 간단한 날짜를 고릅니다. 원하는 모양이 따로 있으면 Ctrl+1 > 사용자 지정에서 yyyy-mm-dd처럼 지정합니다.
B2부터 B5까지 날짜가 선택되어 있고 Home 탭 Number 그룹의 표시 형식 목록에 Date가 선택된 엑셀 화면
홈 탭 > 표시 형식(Number) 그룹의 목록에서 날짜 형식을 지정한 화면 (영문판 엑셀 화면 · 이미지 출처: Deskbright's Ultimate Excel Book, 저자 허락 하에 사용)

EOMONTH가 오류를 낸다면 start_date를 먼저 확인하세요. 날짜처럼 보이지만 실제로는 텍스트인 값("2019.05.06" 등)이나 날짜로 해석할 수 없는 값을 넣으면 #VALUE!나 #NUM! 오류가 납니다. 수식 안에 날짜를 직접 쓸 때는 =EOMONTH(DATE(2019,5,6),0)처럼 DATE 함수를 쓰면 지역 설정에 따른 해석 차이를 피할 수 있습니다.

실무에서 자주 쓰는 응용 수식

  • 이번 달 일수: =DAY(EOMONTH(A2,0)) → 5월이면 31
  • 이번 달 남은 일수: =EOMONTH(TODAY(),0)-TODAY() (결과 셀은 표시 형식을 일반으로)
  • 이번 달 기간 합계: =SUMIFS(C:C,B:B,">="&EOMONTH(A2,-1)+1,B:B,"<="&EOMONTH(A2,0)) → B열 날짜가 A2와 같은 달인 행의 C열 합계

말일이 아니라 "N개월 뒤 같은 날짜"가 필요하다면 EDATE 함수를 씁니다. =EDATE(A2,1)은 2019-06-06입니다. 1월 31일처럼 다음 달에 같은 날이 없으면 그 달 말일로 맞춰집니다.

구글 스프레드시트에서는

구글 스프레드시트에도 EOMONTH와 EDATE가 있고 인수 순서와 결과가 엑셀과 같습니다. 월초를 구하는 =EOMONTH(A2,-1)+1 수식도 그대로 쓸 수 있습니다. 결과가 숫자로 보이면 서식 메뉴 > 숫자 > 날짜로 바꿉니다.

자주 묻는 질문

EOMONTH 결과가 43616처럼 숫자로 나옵니다.

오류가 아니라 날짜 일련번호입니다. 결과 셀을 선택하고 홈 탭 > 표시 형식 목록에서 간단한 날짜를 고르면 2019-05-31처럼 보입니다.

이번 달 1일을 구하는 가장 간단한 수식은 무엇인가요?

=EOMONTH(A2,-1)+1입니다. 지난달 말일에 하루를 더하는 방식이며, =DATE(YEAR(A2),MONTH(A2),1)로도 같은 결과를 얻습니다.

EOMONTH와 EDATE는 어떻게 다른가요?

EOMONTH는 N개월 뒤 달의 말일을, EDATE는 N개월 뒤 같은 날짜를 돌려줍니다. 기준일이 2019-05-06이고 N이 1이면 EOMONTH는 2019-06-30, EDATE는 2019-06-06입니다.

함께 보면 좋은 글: 엑셀 날짜 함수 DAY MONTH YEAR WEEKDAY, 엑셀 표시 형식과 셀 서식 정리

벤

글쓴이 · 엉클벤

엑셀·스프레드시트 함수, AI 활용법, 컴퓨터·스마트폰 생활 팁을 따라 하기 쉽게 정리합니다. 틀린 내용은 연락처로 알려 주세요. 소개 보기

📚 벤스페이퍼 엑셀 강좌

기초부터 피벗 테이블까지 배우는 순서대로 정리한 엑셀 강좌 전체 목차에서 다음 글을 이어서 볼 수 있습니다.

Powered by Blogger