- 최초 작성일: 1999-07-12
- 최종 수정일: 2026-09-29
- 조회수: 26 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: 날짜 계산하기
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
오늘 강좌의 소스부분은 UNO21님의 site에서 퍼온 것입니다. 초보님들은 '아, 이런 기능도 있구나!'하고 그냥 보기만 하세요. 괜히 겁먹지 마시고…
날짜 계산하기
핵심 요약
- 현재일자에서 입사일자를 그냥 차감하면 일수만 나오고, Days360 함수는 1년을 360일로 가정하므로 정확한 일수를 구하기 어렵습니다.
- YEAR, MONTH, DAY, OR, AND 등의 함수와 연산자를 조합한 수식으로 근무기간을 년, 개월, 일 형태로 계산할 수 있습니다.
- 지금은 이렇게 복잡한 방법을 쓰지 않아도 되며, 두 날짜 사이의 계산 방법은 X0053, X0054 강좌를 참고합니다.
Step 1: 두 날짜의 기간 계산하기
두날짜 사이의 날짜를 계산하는 워크시트 함수를 하나 만들어 보겠습니다.
| 입사일자 | 현재일자 | 근무기간 (공식상) |
| 32487 | 36373 | 3886 |
| 31352 | 36373 | 5021 |
참고: 표의 입사일자와 현재일자는 날짜 서식이 적용되지 않은 일련번호로 나타나 있습니다(36373은 1999-08-01, 32487은 1988-12-10). 첫 번째 표의 두 번째 입사일자(31352)와 두 번째 표의 두 번째 입사일자(31364)는 서로 다르며, 원문 값은 그대로 두었습니다.
위 표에서는 근무기간을 구하기 위해 현재일자에서 입사일자를 그냥 차감을 하였습니다. 그런데 결과가 어떻습니까. 기간이 제대로 계산되지 않았지요? 이런 경우에는 Days360함수를 사용할 수도 있지만 이것은 일년을 360일로 가정하고 계산하기 때문에 정확한 일수까지를 구하기는 어렵습니다.
아래의 표를 보세요. 근무기간이 정확히 계산되어 있습니다.
| 입사일자 | 현재일자 | 근무기간 |
| 32487 | 36373 | 10년 7개월 22일 |
| 31364 | 36373 | 13년 8개월 19일 |
Step 2: 날짜 계산 수식 적용하기
D26 셀에는 다음과 같은 공식이 들어 있습니다.
=YEAR(C26)-YEAR(B26)-IF(OR(MONTH(C26)<MONTH(B26),AND(MONTH(C26)=MONTH(B26),DAY(C26)<DAY(B26))),1,0) & "년 " &
MONTH(C26)-MONTH(B26)+IF(AND(MONTH(C26)<=MONTH(B26),DAY(C26)<DAY(B26)),11,IF(AND(MONTH(C26)<MONTH(B26),DAY(C26)>=DAY(B26)),12,IF(AND(MONTH(C26)>MONTH(B26),DAY(C26)<DAY(B26)),-1))) & "개월 " &
C26-DATE(YEAR(C26),MONTH(C26)-IF(DAY(C26)<DAY(B26),1,0),DAY(B26)) & "일"
참고: 수식의 B26, C26, D26은 원본 워크시트 기준 셀 주소이며 각각 입사일자, 현재일자, 근무기간 셀에 해당합니다. 이 수식을 표의 두 입사일자에 적용해 다시 계산하면 10년 7개월 22일, 13년 8개월 19일로 표의 결과와 일치함을 확인했습니다.
무슨 암호문처럼 복잡하게 보입니다만 year, month, day, or, and 등 몇 가지 함수와 연산자들의 조합으로 되어 있습니다. 찬찬히 들여다 보시면 원리를 아실 것입니다.
오늘은 이만…
Step 3: DATEDIF 함수 참고하기
이 강좌파일을 작성할 시점에는 Datedif 함수를 몰랐습니다(몰랐는지 원래 없었는지... ^^). 지금은 이렇게 골치 아픈 방법을 사용하여 계산하지 않아도 됩니다. 두 날짜 사이의 계산방법이 궁금하신 분은 X0053, X0054 강좌를 참고하세요.
정리 — 날짜 계산하기
| 구분 | 내용 |
|---|---|
| 단순 차감 | 현재일자에서 입사일자를 그냥 빼면 일수만 나옴(예: 3886, 5021) |
| Days360 | 1년을 360일로 가정하므로 정확한 일수까지 구하기는 어려움 |
| 근무기간 수식 | YEAR, MONTH, DAY, OR, AND 등을 조합해 년, 개월, 일 형태로 계산 |
| 결과 예 | 10년 7개월 22일, 13년 8개월 19일 |
| 참고 | 지금은 이런 복잡한 방법이 필요 없으며 X0053, X0054 강좌를 참고 |
자주 묻는 질문 (FAQ)
Q1. 두 날짜 사이의 기간을 구할 때 그냥 빼면 왜 안 되나요?
현재일자에서 입사일자를 빼면 일수만 계산되어 년, 개월, 일 형태의 기간이 나오지 않습니다.
Q2. Days360 함수를 쓰면 정확한 근무기간을 구할 수 있나요?
Days360 함수는 1년을 360일로 가정하고 계산하므로 정확한 일수까지 구하기는 어렵습니다.
Q3. 복잡한 수식 없이 두 날짜 사이를 계산할 수 있나요?
지금은 골치 아픈 수식을 쓰지 않아도 됩니다. 두 날짜 사이의 계산 방법은 X0053, X0054 강좌를 참고하시기 바랍니다.
마치며
복잡해 보이는 수식도 함수와 연산자의 조합이므로 찬찬히 들여다보면 원리를 이해할 수 있습니다. VBA에 대한 기초 지식을 공부하실 분은 아이엑셀러 닷컴 사이트 상단 메뉴에서 [Excel 강의] - [Excel 입문]을 먼저 보시면 이해하기 쉽습니다.