- 최초 작성일: 1999-10-07
- 최종 수정일: 2026-09-29
- 조회수: 26 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: DATEDIF 함수Ⅱ
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
어제 강좌에서 datedif()함수를 활용한 날짜 계산 방법에 대해 알려 드렸지요?
그런데 일수/월수/년수는 아래와 같이 구하겠는데…
| ① 두 날짜간의 일수 차이는? | 11,375 | =DATEDIF(B19,C19,"d") |
| ② 두 날짜간의 월수 차이는? | 373 | =DATEDIF(B19,C19,"m") |
| ③ 두 날짜간의 년수 차이는? | 31 | =DATEDIF(B19,C19,"y") |
아래와 같이 "OO년 OO개월 OO일"은 어떻게 구할 수 있느냐고 의문을 가지시는 분이 있으시지요?
DATEDIF 함수Ⅱ
핵심 요약
- DATEDIF의 y·ym·md 결과를 연결하면 두 날짜의 차이를 몇 년 몇 개월 며칠 형태로 표시할 수 있습니다.
- 두 날짜 차이를 7로 나눈 몫은 경과 주 수로, 나머지는 추가 일수로 계산할 수 있습니다.
- TRUNC와 MOD를 조합하면 경과 기간을 주와 일 단위로 나누어 표현할 수 있습니다.
| 출생일 | 현재일 | |
| 1968-11-13 | 2000-01-05 | 31년1개월23일 |
어떻게 하면 될까요? 새로운 어떤 함수의 추가 없이도 조금만 응용을 하면 가능합니다.
기회 있을 때마다 말씀드립니다만 그래서 응용이 중요한 것이기도 하구요.
1분동안만 방법을 생각해 보신후 아래를 보세요.
=DATEDIF(B13,C13,"y")&"년"&DATEDIF(B13,C13,"ym")&"개월"&DATEDIF(B13,C13,"md")&"일"
참고: 수식의 "md" 인수는 두 날짜에서 연과 월을 무시하고 일(日)만의 차이를 구하는 것으로, 앞 강좌의 다섯 가지 연산방법에는 나오지 않았습니다. Microsoft 설명에 따르면 "md"는 일부 날짜 조합에서 부정확한 결과가 나올 수 있으므로 중요한 계산에는 결과를 확인해 보시기 바랍니다.
위와 같이 조합을 하면 원하는 결과를 얻을 수 있습니다. 어때요? 새로운 함수가 하나도 사용되지 않았지요? 그저 지금까지 배운 함수들을 약간 조합했을 따름입니다.
이번 강좌 여기까지… 하려니까 뭔가 허전하지요? 조금더 응용을 하여 볼까요?
"현재일과 출생일간에 몇주 몇일이 경과하였는가?"를 구하려면 어떻게 해야 할까요?
아래 그림과 같은 결과를 얻으려면 말이지요.
| 출생일 | 현재일 | 몇주 경과? |
| 1968-11-13 | 2000-01-05 | 1625주 0일 |
위 셀에는 이런 수식이 입력되어 있습니다. 찬찬히 살펴보시면 이해하실 것입니다.
=TRUNC((C35-B35)/7) & "주 " & TRUNC(MOD(C35-B35,7)) & "일"
가만, trunc() 함수에 대해서는 설명을 드렸던가요? 소수점 아래를 절사하는(잘라내는) 함수입니다.
자세한 설명은 도움말 기능을 참조하세요. 별로 어렵지 않을 테니까…
mod()함수도 설명을 안 드렸지요. Mod()함수는 지정한 숫자로 나누고 남는 숫자를 돌려주는(return) 함수입니다.
즉 위의 수식을 해석하자면, 현재일과 출생일의 차이일수를 7(왜 7이냐고요? 일주일이 7일이잖아요) 로 나눈 뒤, 소수점 아래부분은 잘라내어 週를 먼저 구합니다. 그런 다음 다시 현재일과 출생일의 차이 중에서 7로 나눈 나머지 값으로 일수를 구한 것입니다.
주말을 앞둔 기념(?)으로 오늘은 짧게하고 마칩니다(사실은 시간이 없어서리…)
정리 — DATEDIF 함수Ⅱ
| 구분 | 내용 |
|---|---|
| 문제 | 일수, 월수, 년수가 아니라 OO년 OO개월 OO일 형태로 구하기 |
| 해결 | DATEDIF 함수의 y, ym, md 결과를 연결 연산자로 이어 붙임 |
| 예제 결과 | 1968-11-13과 2000-01-05 사이는 31년1개월23일 |
| 몇 주 몇 일 | TRUNC 함수로 주 수를, MOD 함수로 남은 일수를 구함 |
| 예제 결과 2 | 1625주 0일 |
| TRUNC | 소수점 아래를 잘라내는 함수 |
| MOD | 지정한 숫자로 나누고 남는 값을 돌려주는 함수 |
자주 묻는 질문 (FAQ)
Q1. OO년 OO개월 OO일은 어떻게 구하나요?
DATEDIF 함수를 y, ym, md 인수로 세 번 사용하고 그 결과를 연결 연산자로 이어 붙입니다. 새로운 함수 없이 지금까지 배운 함수를 조합하면 됩니다.
Q2. 몇 주 몇 일이 경과했는지는 어떻게 구하나요?
두 날짜의 차이 일수를 7로 나눈 몫의 정수 부분이 주 수이고, 7로 나눈 나머지가 남은 일수입니다. 각각 TRUNC 함수와 MOD 함수로 구합니다.
Q3. TRUNC 함수와 MOD 함수는 무엇인가요?
TRUNC 함수는 소수점 아래를 잘라내는 함수이고, MOD 함수는 지정한 숫자로 나누고 남는 값을 돌려주는 함수입니다.
마치며
새로운 함수를 외우기보다 이미 아는 함수를 조합하는 응용력을 키워 보시기 바랍니다. VBA에 대한 기초 지식을 공부하실 분은 아이엑셀러 닷컴 사이트 상단 메뉴에서 [Excel 강의] - [Excel 입문]을 먼저 보시면 이해하기 쉽습니다.