핵심 요약
=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는 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)+1 | 2019-05-01 |
| 다음 달 1일 | =EOMONTH(A2,0)+1 | 2019-06-01 |
| 지난달 1일 | =EOMONTH(A2,-2)+1 | 2019-04-01 |
이번 달 1일은 =DATE(YEAR(A2),MONTH(A2),1)로도 구할 수 있습니다. 결과는 같으니 읽기 편한 쪽을 쓰면 되지만, 말일과 1일을 한 표에서 함께 계산한다면 EOMONTH로 통일하는 편이 수식을 비교하기 쉽습니다.
결과가 숫자로 보이거나 오류가 날 때
EOMONTH는 날짜 일련번호를 돌려주기 때문에, 수식을 넣은 셀의 표시 형식이 일반이면 2019-05-31 대신 43616이 보입니다. 계산은 맞았으니 표시 형식만 바꾸면 됩니다.
- 결과 셀을 선택합니다.
홈탭 >표시 형식그룹의 목록 상자를 엽니다.간단한 날짜를 고릅니다. 원하는 모양이 따로 있으면 Ctrl+1 >사용자 지정에서yyyy-mm-dd처럼 지정합니다.
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, 엑셀 표시 형식과 셀 서식 정리
댓글
댓글 남기기