엑셀 날짜 계산은 목적에 맞는 함수 하나만 고르면 끝납니다. 두 날짜 사이의 년·월·일은 DATEDIF, 주말과 공휴일을 뺀 영업일은 NETWORKDAYS, 몇 개월 뒤 만기일은 EDATE, 그 달 말일은 EOMONTH를 씁니다. 다만 날짜가 텍스트로 입력돼 있으면 모든 수식이 오류를 내니, 아래 예제와 오류 해결표로 한 번에 정리하세요.
공식 도움말에서 함수 인수와 주의사항을 확인할 수 있습니다.

먼저 결론
- 근속연수·나이:
=DATEDIF(시작일,종료일,"Y") - 영업일 수:
=NETWORKDAYS(시작일,종료일,공휴일범위) - 3개월 뒤 같은 날:
=EDATE(시작일,3), 그 달 말일:=EOMONTH(시작일,0) - 오늘 기준 계산은
TODAY()를 종료일에 넣으면 매일 자동 갱신됩니다. - 날짜가 왼쪽 정렬이면 텍스트일 가능성이 높아 먼저 날짜로 바꿔야 합니다.
엑셀 날짜 계산의 원리
엑셀은 날짜를 1900년 1월 1일을 1로 하는 일련번호로 저장합니다. 그래서 =B2-A2처럼 날짜끼리 빼기만 해도 두 날짜 사이의 일수가 나옵니다. 셀 서식만 “날짜”로 보이게 바꿀 뿐 속은 숫자라는 점을 기억하면 대부분의 오류를 이해할 수 있습니다.
반대로 “2026.11.07”처럼 마침표로 입력하거나 다른 프로그램에서 붙여 넣은 날짜는 텍스트로 들어가 계산이 되지 않습니다. 셀 안에서 왼쪽으로 붙어 있다면 텍스트 날짜를 의심하세요.
목적별 함수 7가지 비교표
| 목적 | 함수 | 기본 형식 | 주의점 |
|---|---|---|---|
| 년·월·일 차이 | DATEDIF | =DATEDIF(A2,B2,"Y") |
함수 마법사 목록에 없음, 직접 입력 |
| 영업일 수 | NETWORKDAYS | =NETWORKDAYS(A2,B2,H:H) |
시작일·종료일 포함 |
| 휴무 요일 지정 | NETWORKDAYS.INTL | =NETWORKDAYS.INTL(A2,B2,11) |
11은 일요일만 휴무 |
| 영업일 뒤 날짜 | WORKDAY | =WORKDAY(A2,10,H:H) |
시작일 다음 날부터 셈 |
| 몇 개월 뒤 같은 날 | EDATE | =EDATE(A2,6) |
결과가 숫자로 보이면 날짜 서식 적용 |
| 그 달 말일 | EOMONTH | =EOMONTH(A2,0) |
1은 다음 달 말일 |
| 연 단위 비율 | YEARFRAC | =YEARFRAC(A2,B2,1) |
이자·일할 계산에 사용 |
실무 예제 수식 모음
① 근속 “○년 ○개월 ○일”
=DATEDIF(A2,TODAY(),"Y")&"년 "&DATEDIF(A2,TODAY(),"YM")&"개월 "&DATEDIF(A2,TODAY(),"MD")&"일"
② 만 나이
=DATEDIF(생년월일,TODAY(),"Y")
③ 공휴일 뺀 이번 달 영업일
=NETWORKDAYS(EOMONTH(TODAY(),-1)+1,EOMONTH(TODAY(),0),공휴일!A:A)
④ 계약일 기준 2년 만기일 전날
=EDATE(A2,24)-1
⑤ D-day 표시
="D-"&(B2-TODAY())
마이크로소프트는 DATEDIF의 “MD” 단위가 일부 경우 음수나 부정확한 값을 낼 수 있다고 안내합니다. 일 단위가 중요한 근속 계산이라면 결과를 한두 건 손으로 검산하세요. 데이터를 다른 표에서 찾아와야 한다면 엑셀 XLOOKUP 사용법과 함께 쓰면 편합니다.
오류 원인별 해결표
| 증상 | 원인 | 해결 |
|---|---|---|
| #VALUE! | 날짜가 텍스트로 입력됨 | 데이터 → 텍스트 나누기 → 날짜(YMD) 변환, 또는 DATEVALUE |
| #NUM! | DATEDIF 시작일이 종료일보다 늦음 | 인수 순서 바꾸기 |
| 46333 같은 숫자 표시 | 결과 셀 서식이 일반 | Ctrl+1 → 날짜 서식 |
| 영업일이 하루 많음 | NETWORKDAYS는 양 끝 날짜 포함 | 결과에서 1을 빼거나 기준 정리 |
| 공휴일이 안 빠짐 | 공휴일 목록이 텍스트 | 공휴일 범위도 날짜 형식으로 |
실수 없이 쓰는 6단계
1단계: 날짜 열을 진짜 날짜로 바꿉니다. 열 전체를 선택하고 “텍스트 나누기”에서 날짜(YMD)를 지정하면 한 번에 변환됩니다.
2단계: 같은 값이 중복되지 않았는지 봅니다. 명단이 겹치면 계산이 두 번 들어갑니다. 엑셀 중복값 찾기·제거 방법으로 먼저 정리하세요.
3단계: 공휴일 시트를 따로 만듭니다. 대체공휴일·임시공휴일까지 날짜로 입력해 두면 NETWORKDAYS와 WORKDAY에 같이 씁니다.
4단계: 목적에 맞는 함수를 고릅니다. 위 비교표에서 “일수 / 영업일 / 만기일 / 말일” 중 무엇이 필요한지 정합니다.
5단계: 기준일은 TODAY 또는 고정 날짜로 정합니다. 보고서처럼 기준일이 바뀌면 안 되는 문서는 TODAY 대신 특정 날짜 셀을 참조합니다.
6단계: 두세 건을 손으로 검산합니다. 윤년(2월 29일)과 월말이 낀 경우를 꼭 확인합니다.
실수 방지 체크리스트
- 날짜가 셀 오른쪽 정렬(숫자)로 보인다
- DATEDIF 인수 순서가 시작일 → 종료일이다
- 공휴일 목록에 대체공휴일까지 넣었다
- NETWORKDAYS가 양 끝 날짜를 포함한다는 걸 반영했다
- 결과 셀에 날짜 서식을 적용했다
- 보고서 기준일을 TODAY로 할지 고정할지 정했다
- 윤년·월말 사례를 검산했다
자주 묻는 질문 10개
1. DATEDIF가 함수 목록에 안 보여요.
호환성 때문에 남아 있는 숨은 함수라 목록에 없습니다. 셀에 직접 입력하면 작동합니다.
2. 근속일수에 입사일을 포함하려면요?
=B2-A2+1처럼 1을 더합니다.
3. 토요일만 근무하는 회사의 영업일은요?
NETWORKDAYS.INTL의 주말 인수를 “0000001”처럼 7자리 문자열로 지정하면 원하는 요일만 휴무로 둘 수 있습니다.
4. 1월 31일에 EDATE로 1개월을 더하면요?
2월 말일(28일 또는 29일)이 나옵니다. 존재하지 않는 날짜는 그 달 말일로 맞춰집니다.
5. 시간까지 포함한 날짜 차이는요?
두 셀을 빼면 일 단위 소수가 나오므로 24를 곱하면 시간 단위가 됩니다.
6. 요일을 표시하려면요?
=TEXT(A2,"aaa")는 “월”, “aaaa”는 “월요일”로 표시합니다.
7. 구글 시트에서도 같은 수식이 되나요?
DATEDIF, NETWORKDAYS, EDATE, EOMONTH 모두 구글 시트에서 같은 형식으로 쓸 수 있습니다.
8. 텍스트 “20261107”을 날짜로 바꾸려면요?
=DATE(LEFT(A2,4),MID(A2,5,2),RIGHT(A2,2))로 변환합니다.
9. 만기일이 주말이면 다음 영업일로 옮기려면요?
=WORKDAY(만기일-1,1,공휴일)을 쓰면 주말·공휴일이면 다음 영업일이 나옵니다.
10. 엑셀 버전이 낮아도 되나요?
이 글의 함수는 오래된 버전부터 지원됩니다. 운영체제 업그레이드가 필요하다면 윈도우11 설치 요구사항 확인법을 참고하세요.
날짜 계산과 함께 쓰는 조회 함수를 이어서 확인할 수 있습니다.
함께 읽으면 좋은 글
공식 출처와 확인일
- Microsoft 지원 — DATEDIF 함수 — 단위 인수와 “MD” 주의사항
- Microsoft 지원 — Excel 도움말 — NETWORKDAYS·EDATE·EOMONTH 함수 설명
자료 확인일: 2026년 11월 07일
본 글은 일반적인 사용 방법 안내입니다. 엑셀 버전과 지역 설정에 따라 메뉴 이름이나 인수 구분 기호가 다르게 보일 수 있으니, 중요한 급여·계약 계산은 결과를 다시 검산하시기 바랍니다.