티스토리 뷰
엑셀에서 두 날짜 사이의 기간을 구할 때는 DATEDIF 함수를 씁니다. 근속연수는 =DATEDIF(입사일, 오늘, "Y"), 남은 일수는 =목표일 - 오늘 이면 끝입니다. 그런데 DATEDIF는 엑셀 함수 목록에 나타나지 않아 존재 자체를 모르는 분이 많습니다. 이 글에서 날짜 계산에 필요한 것만 골라 정리했습니다.
이 글에서 답하는 질문
- 두 날짜 사이의 년·월·일을 구하려면?
- 근속연수와 나이는 어떻게 계산하나?
- D-day를 자동으로 갱신되게 하려면?
- 주말을 뺀 근무일수를 세려면?
- 날짜를 뺐는데 이상한 숫자가 나오는 이유는?
1. 먼저 알아야 할 것 — 엑셀에서 날짜는 숫자입니다
엑셀은 날짜를 1900년 1월 1일부터 며칠째인지를 나타내는 숫자로 저장합니다.
- 2026-08-11 = 실제로는 46,245 같은 숫자
- 화면에 날짜로 보이는 건 표시 형식 때문일 뿐
그래서 날짜끼리 그냥 빼면 일수가 나옵니다.
=B2 - A2
결과가 숫자가 아니라 이상한 날짜(예: 1900-02-14)로 나온다면, 셀 서식이 날짜로 되어 있어서입니다. 홈 탭 → 표시 형식을 일반이나 숫자로 바꾸면 됩니다. 계산이 틀린 게 아니라 옷을 잘못 입은 것뿐입니다.
2. DATEDIF — 목록에 없는 숨은 함수
=DATEDIF(시작일, 종료일, "단위")
주의: 이 함수는 엑셀 함수 자동완성 목록에 나타나지 않습니다. =DAT 까지 쳐도 DATEDIF는 안 뜹니다. 그래도 정상 작동하니 이름을 끝까지 직접 입력하세요. 하위 호환을 위해 남겨 둔 함수라 문서화가 안 되어 있을 뿐입니다.
단위 코드 6가지
| 코드 | 의미 | 2020-03-15 ~ 2026-08-11 결과 |
|---|---|---|
| "Y" | 만 년수 | 6 |
| "M" | 만 개월수 | 76 |
| "D" | 총 일수 | 2,340 |
| "YM" | 년을 뺀 나머지 개월 | 4 |
| "MD" | 월을 뺀 나머지 일 | 27 |
| "YD" | 년을 뺀 나머지 일 | 149 |
Y, M, D는 자주 쓰고 YM, MD는 "6년 4개월 27일" 같은 표현을 만들 때 씁니다.
3. 근속연수 구하기
가장 많이 쓰는 용도입니다.
만 근속연수
=DATEDIF(A2, TODAY(), "Y")
"O년 O개월" 형태로 표시
=DATEDIF(A2,TODAY(),"Y") & "년 " & DATEDIF(A2,TODAY(),"YM") & "개월"
"O년 O개월 O일" 형태
=DATEDIF(A2,TODAY(),"Y") & "년 " & DATEDIF(A2,TODAY(),"YM") & "개월 " & DATEDIF(A2,TODAY(),"MD") & "일"
TODAY()를 쓰면 파일을 열 때마다 오늘 날짜로 자동 갱신됩니다. 특정 기준일로 고정하려면 TODAY() 대신 그 셀을 참조하세요.
주의: 근속연수를 =(TODAY()-입사일)/365 로 계산하면 안 됩니다. 윤년 때문에 오차가 쌓여 몇 년 지나면 하루 이틀씩 틀어집니다. 퇴직금이나 연차 계산에 쓰면 분쟁이 됩니다. 반드시 DATEDIF를 쓰세요.
4. 만 나이 구하기
근속연수와 원리가 같습니다.
=DATEDIF(생년월일, TODAY(), "Y")
생일이 지났는지까지 정확히 반영됩니다. 2000년 12월생이 2026년 8월이면 25세로 나옵니다.
5. D-day 계산
남은 일수
=목표일 - TODAY()
D-day 표기로 만들기
=IF(A2-TODAY()>0, "D-" & A2-TODAY(), IF(A2-TODAY()=0, "D-DAY", "D+" & TODAY()-A2))
목표일이 미래면 D-30, 오늘이면 D-DAY, 지났으면 D+15 로 표시됩니다.
6. 주말을 뺀 근무일수 — NETWORKDAYS
=NETWORKDAYS(시작일, 종료일)
토·일요일을 제외한 일수를 셉니다. 시작일과 종료일 양쪽을 모두 포함합니다.
공휴일까지 빼려면 공휴일 목록을 어딘가에 적어 두고 세 번째 인수로 넘깁니다.
=NETWORKDAYS(A2, B2, $F$2:$F$20)
F2:F20에 공휴일 날짜를 적어 두면 그 날들도 제외됩니다. 2026년이라면 8월 15일(광복절), 8월 17일(대체공휴일) 같은 날을 넣어 두면 됩니다.
주말 기준이 다른 회사라면 NETWORKDAYS.INTL을 씁니다. 토요일만 쉬는 회사, 일요일만 쉬는 회사 등을 지정할 수 있습니다.
7. N일·N개월 후 날짜 구하기
N일 후
=A2 + 30
날짜에 숫자를 그냥 더하면 됩니다.
N개월 후 — EDATE
=EDATE(A2, 3)
3개월 후 날짜입니다. 1월 31일의 3개월 후처럼 말일 처리가 애매한 경우도 알아서 처리해 줍니다.
해당 월의 마지막 날 — EOMONTH
=EOMONTH(A2, 0)
0은 이번 달, 1은 다음 달, -1은 지난달의 말일입니다. 세금계산서 발급 기한(다음 달 10일) 같은 걸 자동 계산할 때 유용합니다.
8. 자주 나오는 문제와 해결
문제 1. 날짜를 입력했는데 숫자로 보인다
셀 서식이 일반/숫자입니다. 홈 탭 → 표시 형식 → 간단한 날짜로 바꾸세요.
문제 2. "2026.8.11"로 입력했더니 텍스트가 됐다
엑셀은 점(.)을 날짜 구분자로 잘 인식하지 못합니다. 하이픈(-)이나 슬래시(/)를 쓰세요. 2026-08-11 또는 2026/08/11.
이미 점으로 입력해 버린 데이터가 많다면 바꾸기(Ctrl+H)로 점을 하이픈으로 일괄 변경한 뒤, 데이터 → 텍스트 나누기를 끝까지 눌러 마침하면 날짜로 변환됩니다.
문제 3. DATEDIF가 #NUM! 오류를 낸다
시작일이 종료일보다 나중입니다. 인수 순서를 바꾸세요. DATEDIF는 시작일이 먼저여야 합니다.
문제 4. DATEDIF가 #NAME? 오류를 낸다
함수 이름 오타이거나 한글 입력 상태로 쳤을 가능성이 높습니다. 영문 입력 상태에서 DATEDIF를 정확히 입력하세요.
문제 5. 날짜가 왼쪽 정렬되어 있다
엑셀에서 숫자·날짜는 기본이 오른쪽 정렬입니다. 왼쪽에 붙어 있으면 텍스트로 저장된 것이고, 계산이 안 됩니다. 위 문제 2와 같은 방법으로 변환하세요.
9. 실무에서 바로 쓰는 조합
세금계산서 발급 기한 자동 계산 (공급일 다음 달 10일)
=EOMONTH(A2, 0) + 10
연차 발생일 자동 계산 (입사 후 만 1년)
=EDATE(입사일, 12)
퇴직금 산정 기간
=DATEDIF(입사일, 퇴사일, "Y") & "년 " & DATEDIF(입사일, 퇴사일, "YM") & "개월"
계약 만료 임박 표시
=IF(만료일-TODAY()<=30, "임박", "")
30일 이내면 "임박"이 뜹니다. 조건부서식과 결합하면 색까지 자동으로 바뀝니다.
10. 첨부 실습파일 사용법
시트 세 개로 구성했습니다.
- DATEDIF실습: 여섯 가지 단위 코드가 같은 날짜에 각각 어떤 값을 내는지 나란히 보여 줍니다.
- 근속·나이: 입사일과 생년월일을 넣으면 근속연수, 만 나이가 자동 계산됩니다. 직원 명부 형태로 여러 명을 한 번에 넣을 수 있습니다.
- D-day·근무일수: D-day 표기와 NETWORKDAYS 근무일수 계산 예시입니다. 2026년 하반기 공휴일 목록을 미리 넣어 두었습니다.
노란색 칸의 날짜를 바꾸면 전부 다시 계산됩니다.

마무리
날짜 계산은 DATEDIF 하나만 알면 90%가 해결됩니다. 함수 목록에 안 뜨니 이름만 기억해 두세요. 그리고 근속연수를 365로 나누는 습관은 오늘 버리시길 권합니다.
관련 글
- 엑셀 IFERROR 함수 완전정리 — 오류 6가지 한 번에 처리하는 법
- 엑셀 중복값 찾기·표시·제거 완전정리
- 엑셀 조건부 서식, 특정 값 이상이면 자동으로 색 바뀌게 하는 법
- 퇴직금 계산기 엑셀로 직접 만드는 법
- 퇴사 시 연차수당 계산법
공식 출처
- Microsoft 지원 — DATEDIF 함수: https://support.microsoft.com/ko-kr/office/datedif-%ED%95%A8%EC%88%98-25dba1a4-2812-480b-84dd-8b32a451b35c
- Microsoft 지원 — NETWORKDAYS 함수: https://support.microsoft.com/ko-kr/office/networkdays-%ED%95%A8%EC%88%98-48e717bf-a7a3-495f-969e-5005e3eb18e7
