EOMONTH 실습: 12개월 월말과 전후 영업일을 구분하기

7월 31일이 금요일이면 그날이 마지막 업무일일 수 있지만, 월말보다 한 업무일 전을 구하면 7월 30일입니다. 월말, 마지막 업무일, 월말 이후 두 업무일을 같은 수식으로 처리하지 않도록 첨부에서 서로 다른 열에 놓았습니다.

가상 기준일은 2026-01-15이고 휴일은 2026-08-03 하나입니다. 가상 실습 날짜를 청구 일정이나 공식 공휴일로 사용하지 않습니다. TODAY 대신 고정 날짜를 사용해 파일을 여는 날이 달라도 같은 정답으로 검산합니다.

2026년 열두 달의 월별 일수와 첫·끝 월말을 대조해 365일을 확인하는 기대값 도해
설명용 도해: 2026년 열두 달의 월별 일수와 첫·끝 월말을 대조해 365일을 확인하는 기대값 도해입니다. 가상 날짜의 기대값이며 공식 공휴일·청구 일정·실제 Excel 실행 결과가 아닙니다.

12개월은 시작과 끝 행을 함께 확인하기

12개월 시트 B1은 가상 기준일이고 B2는 날짜 입력 검사입니다. A5:A16에는 0부터 11까지 월 오프셋이 있습니다. B·C·D열은 월초·월말·일수이고 E열은 기본 정답입니다.

=EOMONTH($B$1,A5-1)+1
=EOMONTH($B$1,A5)
=C5-B5+1

실제 첨부 수식은 B2가 계산인지 확인한 뒤 위 부분을 실행합니다. Microsoft EOMONTH 문서는 지정한 개월 전후 달의 마지막 날짜를 반환한다고 설명합니다. 월초는 전월 말일에 1을 더하고, 일수에는 시작과 마지막 날짜를 모두 포함하도록 1을 더했습니다.

입력 검사부터 12행 채우기까지

위 세 줄은 계산 부분만 보여 준 것입니다. 같은 빈칸 처리까지 재현하려면 12개월!B1에 =DATE(2026,1,15)를 입력하고 B2에 다음 식을 넣습니다.

=IF(NOT(ISNUMBER(B1)),"날짜 확인",IF(OR(B1<1,B1<>INT(B1)),"날짜 확인","계산"))

A5에는 0, A6에는 1을 넣고 두 셀을 선택해 A16의 11까지 연속 채우기를 합니다. B5·C5·D5에는 아래 식을 각각 넣고 B5:D5를 16행까지 아래로 복사합니다. B·C열은 날짜 형식, D열은 숫자 형식으로 둡니다.

B5

=IF($B$2="계산",EOMONTH($B$1,A5-1)+1,"날짜 확인")

C5

=IF($B$2="계산",EOMONTH($B$1,A5),"날짜 확인")

D5

=IF($B$2="계산",C5-B5+1,"날짜 확인")

$B$1·$B$2는 복사해도 고정되고 A5·C5·B5의 행은 이동합니다. B1을 실제 빈칸이나 문자 날짜로 바꾸면 B2와 결과 열이 날짜 확인입니다. 숫자처럼 보이는 표시만으로 통과시키지 않습니다. 또 양의 정수라는 검사만으로 현대의 업무 날짜가 보장되지는 않습니다. 기본 1900 날짜 체계에서 숫자 1도 날짜로 해석되므로 실제 적용 시 허용 연도를 따로 정해야 합니다. 이 예제는 2024·2026년을 대상으로 하며 초기 날짜 경계나 최대 날짜까지 보장하는 검사는 아닙니다.

결과를 새로 만들었으면 =COUNT(C5:C16)의 12와 =IF(COUNT(D5:D16)=12,SUM(D5:D16),"계산 보류")의 365를 확인합니다. 두 번째 식은 열두 달 중 일부가 문자 상태일 때 부분 합계를 정상 연간 합계로 보이지 않게 합니다. E열의 고정 월말은 C열을 참조하는 수식으로 바꾸지 말고 아래 월말 기대값과 따로 대조하세요. Microsoft EOMONTH 문서의 적용 대상에는 Excel 2016·2019·2021·2024와 Microsoft 365가 포함됩니다. 이 수식들은 각 셀에서 Enter로 입력합니다.

5행부터 16행까지가 열두 행입니다. 가상 기본 입력의 첫 월말 C5는 2026-01-31, C6은 2026-02-28, 마지막 C16은 2026-12-31입니다. H5의 날짜 수 12, H6의 일수 합 365, H7의 정답 일치 행 12를 함께 확인합니다.

월별 일수는 31,28,31,30,31,30,31,31,30,31,30,31입니다. 이 숫자를 따로 더한 365와 수식 합을 대조하세요. 마지막 12월을 누락한 채 첫 몇 개만 맞다고 끝내지 않습니다.

기준연도만 바꾸는 윤년 실습

가상 연도 변경 실습에서 B1을 2024-01-15로 바꾸면 C6은 2024-02-29이고 H6은 366입니다. 가상 기본 입력의 E열은 2026년의 고정 정답으로 남아 있으므로 H7은 0입니다. 결과에 맞춰 정답 열을 덮는 대신, 입력이 달라졌다는 사실을 기록합니다.

가상 기준일 B1을 다시 2026-01-15로 복구하면 2월 28일, 연간 365일, 일치 행 12로 돌아옵니다. 새로운 연도를 운영 자료로 쓰려면 그 연도의 기대값을 별도로 산출하고 검토해야 합니다.

2024년으로 변경하면 2월 29일·366일이 되고 2026년 고정 정답 일치가 0이 되는 기대값 도해
설명용 도해: 2024년으로 변경하면 2월 29일·366일이 되고 2026년 고정 정답 일치가 0이 되는 기대값 도해입니다. 가상 날짜의 기대값이며 공식 공휴일·청구 일정·실제 Excel 실행 결과가 아닙니다.

납기 세 규칙을 같은 월말에 적용하기

납기경계 B1에는 가상 휴일 2026-08-03이 있습니다. 5~7행에서 B열은 달력 월말, C는 마지막 업무일, D는 월말 이후 두 업무일, E는 월말 이전 두 업무일입니다.

=WORKDAY(B5+1,-1,$B$1)
=WORKDAY(B5,2,$B$1)
=WORKDAY(B5,-2,$B$1)

첨부는 휴일 입력을 검사한 뒤 이 계산을 실행합니다. Microsoft WORKDAY 문서의 주말·지정 휴일 제외 규칙을 사용합니다. C열이 월말에 1을 더하는 것은 월말 자체가 업무일일 때도 선택할 수 있게 하기 위해서입니다.

납기경계 행 B 월말 C 마지막 업무일 D 이후 두 업무일 E 이전 두 업무일
5 2026-07-31 2026-07-31 2026-08-05 2026-07-29
6 2026-02-28 2026-02-27 2026-03-03 2026-02-26
7 2024-02-29 2024-02-29 2024-03-04 2024-02-27

7월 말일 다음은 토·일이고 월요일 8월 3일은 가상 휴일입니다. 따라서 이후 첫 업무일은 4일, 둘째는 5일입니다. 반면 마지막 업무일은 이미 7월 31일입니다. 두 질문을 구분하면 결과가 다르다는 이유로 한쪽을 고칠 필요가 없습니다.

휴일을 비웠을 때 바뀌는 결과만 보기

사본에서 납기경계!B1을 실제 빈칸으로 만들면 B2는 휴일 없음입니다. 가상 휴일 삭제 실습의 D5는 2026-08-04로 바뀌지만 C5와 E5는 7월 31일과 29일로 남습니다. 휴일 변경이 모든 출력에 똑같은 하루 차이를 만들지는 않습니다.

B1을 2026-08-03으로 복구하면 D5가 8월 5일인지 확인합니다. F:H의 고정 기대값과 C:E를 같은 행끼리 비교하세요. 휴일 날짜를 문자로 넣으면 입력 확인이므로 표시 서식만 바꾸지 말고 DATE 또는 실제 숫자 날짜로 복구합니다.

휴일 없음과 잘못된 휴일 입력을 나눠 처리하기

납기경계!B2의 실제 입력 검사는 아래와 같습니다. 빈 셀 또는 빈 문자열은 휴일 없음, 문자 날짜·0·소수 날짜는 날짜 확인입니다. 따라서 휴일이 없어도 계산할 수 있지만 잘못 적은 날짜를 휴일 없음으로 넘기지는 않습니다.

=IF(B1="","휴일 없음",IF(NOT(ISNUMBER(B1)),"날짜 확인",IF(OR(B1<1,B1<>INT(B1)),"날짜 확인","계산")))

첨부 C5:E7은 이 상태를 검사한 뒤 WORKDAY에 B1을 참조합니다. 직접 만든 사본에서 휴일이 없을 때 인수도 명시적으로 생략하고 싶다면 다음 세 식을 C5·D5·E5에 넣고 7행까지 복사할 수 있습니다. 이 세 식은 본문 추가 연습용이며 기존 다운로드 파일의 수식을 바꾼 것은 아닙니다.

C5: 마지막 업무일

=IF($B$2="날짜 확인","입력 확인",IF($B$2="휴일 없음",WORKDAY(B5+1,-1),WORKDAY(B5+1,-1,$B$1)))

D5: 이후 두 업무일

=IF($B$2="날짜 확인","입력 확인",IF($B$2="휴일 없음",WORKDAY(B5,2),WORKDAY(B5,2,$B$1)))

E5: 이전 두 업무일

=IF($B$2="날짜 확인","입력 확인",IF($B$2="휴일 없음",WORKDAY(B5,-2),WORKDAY(B5,-2,$B$1)))

전제는 B5:B7에 앞 표의 실제 월말 날짜가 있다는 것입니다. B1이 숫자 날짜 2026-08-03이면 D5=2026-08-05, 실제 빈칸이면 D5=2026-08-04, 문자 휴무 미정이면 C5:E5 모두 입력 확인이어야 합니다. 확인 후 B1을 =DATE(2026,8,3)으로 복원합니다. WORKDAY의 holidays 인수는 선택 항목이므로 휴일 없는 경로에서는 두 인수만 사용했습니다. 기준 월말 자체의 입력 검사는 별도이며, 이 휴일 검사만으로 잘못된 B5:B7까지 고쳐 주지는 않습니다.

가상 휴일 유무와 잘못된 입력에 따라 7월 월말 앞뒤 업무일을 비교하는 기대값 도해
설명용 도해: 가상 휴일 유무와 잘못된 입력에 따라 7월 월말 앞뒤 업무일을 비교하는 기대값 도해입니다. 가상 날짜의 기대값이며 공식 공휴일·청구 일정·실제 Excel 실행 결과가 아닙니다.

소수 개월의 결과와 입력 정책 구분

가상 경계 입력인 납기경계!A11:E14에서는 2026-03-15에 1.9와 -1.9개월을 적용하고, 2024-02-15와 2026-02-15의 월말도 대조합니다. 결과 C11:C14는 2026-04-30, 2026-02-28, 2024-02-29, 2026-02-28입니다.

EOMONTH는 소수 개월을 잘라 사용하므로 1.9를 2개월로 반올림한 결과와 다릅니다. 여기서는 원시 함수 동작을 확인하기 위해 소수를 그대로 넣었습니다. 회사 입력을 정수 개월로 제한할지는 별도의 계약이며 함수가 소수를 무조건 오류로 낸다고 설명하지 않습니다.

잘못된 월말과 문자 날짜 복구

첫 결과가 전년도 12월이면 A5가 0인데 C5의 오프셋에서 다시 1을 뺐는지 확인합니다. 월초 수식의 -1과 월말 수식을 혼동하지 않습니다. 제공 원본의 C5를 복구한 뒤 C16과 날짜 수 12까지 대조합니다.

가상 입력 B1에 문자 2026-01-15를 넣으면 B2는 날짜 확인, 월별 결과는 날짜 확인, H5는 0, H6은 계산 보류입니다. =DATE(2026,1,15)로 다시 입력하고 날짜 표시를 적용해 기본 결과를 복구합니다. 값이 큰 정수로 보이는 문제와 실제 문자인 문제는 해결 순서가 다릅니다.

입력이나 참조가 깨져 #NUM!·#REF!가 나오면 원본 날짜, 결과 범위, 삭제한 시트부터 확인합니다. 오류를 빈 문자열로 덮으면 누락된 달을 발견하기 어렵습니다. 실제 업무에서는 원본 파일을 남기고 수정 사본에서 검산 후 교체하세요.

이 가상 실습 파일은 시간 단위 마감·반차·법정 기한·청구 정책을 판단하지 않습니다. 다음 달의 같은 일자를 구하려는 목적도 월말 계산과 다릅니다. 날짜를 이동하는 질문부터 이름 붙인 뒤 적합한 함수를 고르는 것이 마지막 확인입니다.

첨부에서 확인할 순서

  1. 12개월!B1의 가상 기준일2026-01-15와 A5:A16의0~11을 확인합니다.

  2. EOMONTH 결과 C5·C6·C16을01-31·02-28·12-31과 비교하고 H5:H7의12·365·12를 봅니다.

  3. 납기경계!C5:E5를07-31·08-05·07-29와 각각 대조합니다.

  4. 사본의 가상 휴일 B1만 비워 D5가08-04로 바뀌는지 확인한 뒤08-03으로 복구합니다.

EOMONTH는 지정한 개월 전후 달의 마지막 날짜를 반환합니다.

WORKDAY의 업무일은 주말과 지정한 휴일을 제외합니다.

출처 원문 수집일: S1 2026-09-24; S2 2026-09-24.

작성자 소개