=DATEDIF(A2,B2,"M")는 A2의 시작일과 B2의 종료일 사이의 꽉 찬 개월 수를 셉니다. 세 번째 인수인 단위가 무엇을 셀지 정합니다. "Y"는 년, "M"은 개월, "D"는 일이며, 날짜의 일부를 무시하는 단위가 세 개 더 있습니다.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Start | End | Unit | Result | |
| 2 | 2024-04-15 | 2026-09-10 | Y | 2 | |
| 3 | M | 28 | |||
| 4 | D | 878 | |||
| 5 | YM | 4 | |||
| 6 | MD | 26 | |||
| 7 | YD | 148 |
2024-04-15부터 2026-09-10까지는 꽉 찬 2년, 꽉 찬 28개월, 878일입니다. B2의 종료일을 바꾸고 각 단위가 어떻게 움직이는지 보세요. 단위는 수식에 직접 입력해도 되고("M"), 여기처럼 셀에서 읽어도 됩니다.
DATEDIF 구문과 단위
=DATEDIF(start_date, end_date, unit)
| 단위 | 세는 것 | 2024-04-15부터 2026-09-10까지 |
|---|---|---|
"Y" | 꽉 찬 햇수 | 2 |
"M" | 꽉 찬 개월 수 | 28 |
"D" | 일수 | 878 |
"YM" | 마지막으로 꽉 찬 해 이후의 개월 수 | 4 |
"MD" | 마지막으로 꽉 찬 달 이후의 일수 | 26 |
"YD" | 마지막으로 꽉 찬 해 이후의 일수 | 148 |
"꽉 찬"이라는 말은 DATEDIF가 절대 올림하지 않는다는 뜻입니다. 1월 31일부터 2월 28일까지는 0개월입니다. 2월 28일이 한 달이 되는 시점보다 앞이기 때문입니다. 단위는 대소문자를 구분하지 않지만("m"도 동작), 따옴표 안에 쓰거나 셀에 넣어야 합니다.
DATEDIF가 함수 목록에 없는 이유
DATEDIF는 Lotus 1-2-3에서 엑셀로 들어온 함수이며, Microsoft는 호환성을 위해서만 이것을 남겨 두고 있습니다. 함수 삽입 대화 상자에 없고, 수식 자동 완성이 제안하지 않으며, 인수를 보여 주는 도움말도 없습니다. 그래도 Windows와 Mac의 모든 엑셀 버전과 Google 스프레드시트에서 계산됩니다. 이름 전체와 여는 괄호 =DATEDIF(를 입력하고 인수를 직접 넣으세요.
두 날짜 사이의 개월 수
대부분의 계약, 구독, 근속 보고서에 필요한 것은 꽉 찬 개월 수입니다. 소수로 된 값이 필요하면 YEARFRAC(A2,B2)*12가 소수 부분을 남긴 개월 수를 반환합니다(기본 기준은 모든 달을 30일로 셉니다).
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Start | End | Full months | Decimal months |
| 2 | 2025-03-10 | 2026-01-05 | 9 | 9.8 |
| 3 | 2024-04-15 | 2026-09-10 | 28 | 28.8 |
| 4 | 2026-01-31 | 2026-02-28 | 0 | 0.9 |
| 5 | 2025-11-01 | 2026-05-01 | 6 | 6.0 |
첫 번째 구독은 꽉 찬 9개월 동안 유지되었습니다. 1월 5일은 10일보다 앞이므로 열 번째 달은 세지 않습니다. 세 번째 행은 1월 31일의 경우로 0개월입니다.
년, 개월, 일 함께 쓰기
"Y", "YM", "MD"는 함께 쓰도록 만들어졌습니다. 각 단위가 앞 단위가 멈춘 곳에서 이어 세므로, 셋을 합치면 "정확히 얼마 동안"에 답합니다. 위 날짜라면 2년 4개월 26일입니다. 나이 계산도 생년월일에 같은 세 단위를 씁니다.
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Hired | Years | Months | Days | Service | As of |
| 2 | 2019-06-03 | 7 | 3 | 27 | 7y 3m 27d | 2026-09-30 |
| 3 | 2023-11-20 | 2 | 10 | 10 | 2y 10m 10d |
첫 번째 직원은 2026-09-30 기준으로 7년 3개월 27일을 근무했습니다.
DATEDIF가 #NUM!을 반환하는 이유
DATEDIF는 거꾸로 세지 않습니다. 시작일이 종료일보다 늦으면 결과는 #NUM!입니다. 순서가 바뀔 수 있다면 MIN으로 이른 날짜를, MAX로 늦은 날짜를 DATEDIF에 주세요.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Start | End | DATEDIF | With MIN and MAX |
| 2 | 2026-03-10 | 2026-01-05 | #NUM! | 64 |
#NUM! 숫자가 이 함수에서 쓸 수 있는 범위를 벗어났습니다.C2는 #NUM!을 보여 주고 D2는 64를 반환합니다. 일수만 필요하다면 =ABS(B2-A2)가 DATEDIF 없이 같은 64를 냅니다. DATEDIF는 "W" 같은 알 수 없는 단위에도 #NUM!을, 날짜가 엑셀이 날짜로 읽지 못하는 텍스트이면 #VALUE!를 반환합니다.
MD 단위는 틀릴 수 있습니다
Microsoft의 공식 문서도 "MD"를 권장하지 않습니다. 시작일의 날짜가 종료일 전달에 없으면 음수를 반환할 수 있기 때문입니다.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Start | End | MD | D |
| 2 | 2026-01-31 | 2026-03-01 | -2 | 29 |
1월 31일부터 3월 1일까지 "MD" 결과는 -2입니다. DATEDIF가 "2월 31일"부터 세는데, 이 날짜가 종료일보다 이틀 뒤인 3월 3일로 넘어가기 때문입니다. 일수 29는 맞습니다. 시작일이 29일에서 31일 사이일 수 있다면 기간을 일수로 보여 주거나 MD 값을 직접 확인하세요.
연습: 개월 수 세기
| A | B | C | |
|---|---|---|---|
| 1 | Start | End | Months |
| 2 | 2025-03-10 | 2026-01-05 |
직접 해 보세요: C2에서 A2의 시작일과 B2의 종료일 사이의 꽉 찬 개월 수를 세세요.
| A | B | C | |
|---|---|---|---|
| 1 | Date 1 | Date 2 | Days |
| 2 | 2026-04-18 | 2026-02-01 |
직접 해 보세요: C2에서 어느 날짜가 먼저 오든 두 날짜 사이의 일수를 세세요.
자주 묻는 질문
엑셀에서 DATEDIF는 무엇을 하나요?
두 날짜 사이의 꽉 찬 년, 개월, 일 수를 셉니다. 년은 =DATEDIF(A2,B2,"Y"), 개월은 "M", 일은 "D"입니다. 시작일이 먼저 와야 합니다.
엑셀에서 DATEDIF를 찾을 수 없는 이유는 무엇인가요?
DATEDIF는 Lotus 1-2-3과의 호환성을 위해 남아 있는 함수라서 엑셀이 함수 삽입 대화 상자와 수식 자동 완성에서 뺐습니다. 그래도 모든 버전에서 동작합니다. =DATEDIF(를 끝까지 입력하고 인수를 직접 넣으세요.
DATEDIF가 #NUM!을 반환하는 이유는 무엇인가요?
시작일이 종료일보다 늦기 때문입니다. 인수를 바꾸거나, 어느 날짜가 먼저인지 모를 때는 =DATEDIF(MIN(A2,B2),MAX(A2,B2),"D")를 쓰세요.
DATEDIF의 YM, MD, YD는 어떻게 다른가요?
날짜의 일부를 무시합니다. "YM"은 꽉 찬 햇수 뒤에 남는 개월 수, "MD"는 꽉 찬 개월 뒤에 남는 일수, "YD"는 꽉 찬 햇수 뒤에 남는 일수를 냅니다. "Y", "YM", "MD"를 함께 쓰면 년, 개월, 일로 나타낸 나이가 됩니다.
DATEDIF는 Google 스프레드시트에서도 동작하나요?
네, 같은 인수와 단위로 동작합니다. 엑셀과 달리 Google 스프레드시트는 함수 도움말에도 DATEDIF를 보여 줍니다.