핵심 요약
- 두 날짜 사이 기간을 "7년 6개월 7일"처럼 한 칸에 보여 주는 방법입니다.
DATEDIF를 세 번("Y"·"YM"·"MD") 쓰고, 그 사이를&로 이어 붙입니다.- Microsoft는
"MD"가 틀린 값을 낼 수 있다고 경고합니다. 일(日) 부분은EDATE로 구하는 더 안전한 수식도 함께 드립니다.
고객 명단을 정리하다 보면 "이분과 거래한 지 얼마나 됐지?"가 궁금해집니다. 가입일과 오늘 날짜를 빼면 일수는 나오지만, 2748일이라고 적혀 있으면 감이 오지 않습니다. "7년 6개월"이라고 보여야 통화할 때 바로 말로 꺼낼 수 있습니다. 근무 기간, 계약 유지 기간, 아이가 학원에 다닌 기간처럼 일상에서도 같은 계산을 자주 합니다.
이 글은 엑셀 "목적별 함수 조합" 시리즈의 한 편입니다. 함수 하나씩 배우는 대신, "이걸 하고 싶다"에서 출발해 어떤 수식을 어느 칸에 넣는지 끝까지 따라가 봅니다.
예제 표: 시작일과 종료일
아래처럼 B열에 시작일, C열에 종료일이 있다고 하겠습니다. 이름은 모두 가상입니다. 맨 윗줄의 A·B·C·D는 엑셀의 열 이름, 맨 왼쪽의 1~9는 행 번호입니다.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | 이름 | 시작일 | 종료일 | 경과 기간 |
| 2 | 김민준 | 2019-03-15 | 2026-09-22 | |
| 3 | 이서연 | 2021-11-08 | 2026-09-22 | |
| 4 | 박지훈 | 2024-07-01 | 2026-09-22 | |
| 5 | 최수아 | 2025-12-10 | 2026-09-22 | |
| 6 | 정도윤 | 2018-02-12 | 2026-09-22 | |
| 7 | 강하은 | 2026-01-20 | 2026-09-22 | |
| 8 | 조현우 | 2020-09-22 | 2026-09-22 | |
| 9 | 윤지아 | 2023-05-05 | 2026-03-31 |
B열과 C열은 엑셀이 날짜로 알아본 값이어야 합니다. 따로 정렬을 바꾸지 않았다면, 셀 안에서 오른쪽으로 붙어 있는 값은 대개 날짜로 인식된 것입니다. 날짜가 글자로 들어갔을 때 나는 오류는 아래 "자주 막히는 곳"에서 다룹니다.
완성 수식: D2에 넣고 D9까지 채우기
D2 셀을 클릭하고 아래 수식을 그대로 입력합니다.
=DATEDIF(B2,C2,"Y")&"년 "&DATEDIF(B2,C2,"YM")&"개월 "&DATEDIF(B2,C2,"MD")&"일"
- D2에 수식을 입력하고 Enter를 누릅니다.
7년 6개월 7일이 나오면 정상입니다. - D2를 다시 클릭하고, 셀 오른쪽 아래 모서리의 작은 네모(채우기 핸들)를 D9까지 끌어내립니다.
- 행마다 B·C 주소가 B3·C3, B4·C4로 알아서 바뀝니다. 참조하는 칸이 같은 행이라
$는 붙이지 않습니다.
| A | B | C | D (결과) | |
|---|---|---|---|---|
| 2 | 김민준 | 2019-03-15 | 2026-09-22 | 7년 6개월 7일 |
| 3 | 이서연 | 2021-11-08 | 2026-09-22 | 4년 10개월 14일 |
| 4 | 박지훈 | 2024-07-01 | 2026-09-22 | 2년 2개월 21일 |
| 5 | 최수아 | 2025-12-10 | 2026-09-22 | 0년 9개월 12일 |
| 6 | 정도윤 | 2018-02-12 | 2026-09-22 | 8년 7개월 10일 |
| 7 | 강하은 | 2026-01-20 | 2026-09-22 | 0년 8개월 2일 |
| 8 | 조현우 | 2020-09-22 | 2026-09-22 | 6년 0개월 0일 |
| 9 | 윤지아 | 2023-05-05 | 2026-03-31 | 2년 10개월 26일 |
종료일 자리에 오늘 날짜를 쓰고 싶다면 C2 대신 TODAY()를 넣습니다. 예: =DATEDIF(B2,TODAY(),"Y")&"년 "&…. 이렇게 하면 파일을 열 때마다 기간이 늘어납니다. Microsoft 문서도 TODAY를 쓰면 나중에 파일을 다시 열 때 값이 바뀐다고 안내합니다.
수식 풀어 보기: 안쪽부터 한 겹씩
수식이 길어 보이지만 같은 함수가 세 번 나올 뿐입니다. 김민준(2행, 2019-03-15 ~ 2026-09-22)으로 따라가 보겠습니다.
1단계: DATEDIF가 하는 일
=DATEDIF(시작일, 종료일, 단위)
두 날짜 사이를 단위에 맞춰 세어 숫자로 돌려줍니다. 단위는 큰따옴표로 감싼 글자입니다. Microsoft 문서에 나온 단위는 여섯 가지입니다.
| 단위 | 세는 것 | 김민준 결과 |
|---|---|---|
"Y" | 꽉 찬 햇수 | 7 |
"M" | 꽉 찬 개월 수(전체) | 90 |
"D" | 전체 일수 | 2748 |
"YM" | 햇수를 빼고 남은 개월 | 6 |
"MD" | 개월까지 빼고 남은 일 | 7 |
"YD" | 햇수를 빼고 남은 일 | (이 글에서는 쓰지 않음) |
"꽉 찬"이 중요합니다. 2019-03-15에서 2026-03-14까지는 아직 7년이 안 됐으므로 "Y"는 6입니다. 3월 15일이 되어야 7이 됩니다.
2단계: 세 조각을 따로 구하기
DATEDIF(B2,C2,"Y")→7(2019-03-15부터 꽉 찬 7년, 2026-03-15까지)DATEDIF(B2,C2,"YM")→6(2026-03-15부터 꽉 찬 6개월, 2026-09-15까지)DATEDIF(B2,C2,"MD")→7(2026-09-15부터 9월 22일까지 7일)
3단계: &로 이어 붙이기
&는 앞뒤 값을 글자로 이어 주는 기호입니다. 숫자와 글자를 섞어도 됩니다.
7 & "년 " & 6 & "개월 " & 7 & "일" → 7년 6개월 7일
"년 " 뒤에 띄어쓰기가 한 칸 들어 있어야 결과가 "7년 6개월"처럼 띄어집니다. 띄어쓰기를 빼면 "7년6개월7일"로 붙어 나옵니다.
결과는 글자입니다. &로 이은 값은 숫자가 아니라 텍스트라서 합계·평균·정렬 기준으로 쓰기 어렵습니다. 계산이나 정렬이 필요하면 옆 열에 =DATEDIF(B2,C2,"M")처럼 숫자만 구해 두고, 보여 주는 칸만 이어 붙이세요.
자주 막히는 곳
"MD"가 이상한 값을 낼 때 — 더 안전한 수식
Microsoft 문서는 DATEDIF가 특정 상황에서 잘못된 결과를 낼 수 있고, 특히 "MD"는 음수·0·부정확한 값이 나올 수 있으니 쓰지 않는 것이 좋다고 적고 있습니다. 어떤 날짜 조합에서 틀리는지는 문서에 나와 있지 않습니다.
저는 엑셀이 없는 환경에서 검증 도구로 계산했는데, 시작일의 '일'이 종료일의 '일'보다 큰 행(예: 11월 30일 시작, 9월 22일 종료)에서 "MD" 결과가 계산 방식마다 달랐습니다. 엑셀에서 정확히 어떤 값이 나오는지는 확인하지 못해 여기 적지 않습니다. 대신 일(日) 부분을 아래처럼 구하면 계산 근거가 분명합니다.
=DATEDIF(B2,C2,"Y")&"년 "&DATEDIF(B2,C2,"YM")&"개월 "&(C2-EDATE(B2,DATEDIF(B2,C2,"M")))&"일"
DATEDIF(B2,C2,"M")으로 꽉 찬 개월 수를 구합니다.EDATE(B2, 개월 수)는 시작일에서 그만큼 달을 넘긴 날짜입니다.- 종료일에서 그 날짜를 빼면 남은 일수가 나옵니다. 괄호로 감싸야 뺄셈을 먼저 하고 나서 이어 붙입니다.
| 이름(가상) | 시작일 | 종료일 | EDATE 방식 결과 |
|---|---|---|---|
| 한지민 | 2021-11-30 | 2026-09-22 | 4년 9개월 23일 |
| 오세훈 | 2023-05-05 | 2026-03-04 | 2년 9개월 27일 |
한지민은 꽉 찬 57개월이 지나 2026-08-30이 되고, 거기서 9월 22일까지 23일입니다. 앞의 예제 표 8명은 두 수식의 결과가 똑같았습니다.
자주 나오는 오류와 원인
#NUM!— 시작일이 종료일보다 늦습니다. 두 칸이 바뀌지 않았는지 보세요. Microsoft 문서에 나온 동작이며, 검증에서도 같은 오류가 나왔습니다.#VALUE!— 시작일이나 종료일 칸에 날짜로 읽을 수 없는 글자(예: "작년 3월")가 들어 있습니다. 날짜를2026-09-22처럼 연-월-일 형식으로 다시 입력해 보세요.- 함수 이름이 자동 완성에 안 뜸 — DATEDIF는 Microsoft가 "Lotus 1-2-3 옛 파일과의 호환을 위해 제공"한다고 설명하는 함수입니다. 입력 중 뜨는 함수 목록이나 [함수 삽입] 창에서 안 보일 수 있습니다(버전에 따라 다를 수 있습니다). 목록에 없어도 끝까지 직접 입력하면 계산됩니다.
다른 방법: DATEDIF 없이, 그리고 응용
기본 날짜 함수만으로 개월 수 구하기
자격증 공부를 하고 있거나 DATEDIF를 쓰지 않는 환경이라면 YEAR·MONTH로 개월 수를 구할 수 있습니다.
=(YEAR(C2)-YEAR(B2))*12+MONTH(C2)-MONTH(B2)
햇수 차이에 12를 곱하고 달 차이를 더하는 방식입니다. 다만 일(日)을 보지 않습니다. 위의 한지민(2021-11-30 ~ 2026-09-22)은 이 식으로 58, DATEDIF(…,"M")으로는 57이 나왔습니다. 9월 22일은 아직 30일이 되지 않아 58번째 달이 꽉 차지 않았기 때문입니다. 일까지 따져야 하는 기간이라면 DATEDIF 쪽을 쓰세요.
개월 수를 "몇 년 몇 개월"로 바꾸기
이미 E열에 개월 수(예: 90)가 있다면 12로 나눈 몫과 나머지로 바꿉니다.
=INT(E2/12)&"년 "&MOD(E2,12)&"개월"
90이면 INT(90/12)가 7, MOD(90,12)가 6이라 7년 6개월이 됩니다.
"0년"을 숨기기
1년이 안 된 사람에게 "0년 9개월"이 어색하면 IF로 0일 때만 비웁니다.
=IF(DATEDIF(B2,C2,"Y")=0,"",DATEDIF(B2,C2,"Y")&"년 ")&DATEDIF(B2,C2,"YM")&"개월"
최수아(5행)는 9개월, 김민준(2행)은 7년 6개월로 나옵니다.
매달 한 번씩 하는 일의 회차 세기
시작한 달을 1회차로 치고 매달 한 번씩 하는 일(월 모임, 정기 납부 등)이라면 =DATEDIF(B2,C2,"M")+1이 지금까지의 회차가 됩니다. 김민준은 91입니다. 회차를 세는 기준(시작일을 1회로 볼지, 날짜가 되기 전 달을 칠지)은 곳마다 다르니 자기 기준과 맞는지 한 줄만 손으로 세어 확인하세요.
자주 묻는 질문
DATEDIF를 입력했는데 함수 목록에 안 나옵니다. 없는 함수인가요?
아닙니다. DATEDIF는 옛 스프레드시트 파일과의 호환을 위해 남아 있는 함수라 입력 중 뜨는 목록에 안 보일 수 있습니다. =DATEDIF(B2,C2,"Y")처럼 끝까지 직접 입력하면 계산됩니다.
결과가 "#NUM!"으로 나옵니다.
시작일이 종료일보다 늦을 때 나는 오류입니다. DATEDIF는 첫 번째 칸에 이른 날짜, 두 번째 칸에 늦은 날짜를 넣어야 합니다. 두 셀의 순서가 바뀌지 않았는지 확인하세요.
"MD"를 써도 괜찮나요?
Microsoft는 "MD"가 음수·0·부정확한 결과를 낼 수 있다며 권하지 않습니다. 일(日)까지 정확히 필요하면 C2-EDATE(B2,DATEDIF(B2,C2,"M"))로 남은 일수를 구하는 방식을 쓰세요.
함께 보면 좋은 글: 엑셀 날짜 함수 DAY MONTH YEAR WEEKDAY, 엑셀 텍스트 합치기 CONCATENATE와 &, 엑셀 IF 함수와 중첩 IF 사용법. 목적별 함수 조합 글 전체는 엑셀 목차에서 볼 수 있습니다.
참고: Microsoft 지원 — DATEDIF 함수, Microsoft 지원 — 두 날짜 간의 차이 계산, Microsoft 지원 — EDATE 함수
댓글
댓글 남기기