엑셀 날짜 계산
- 두 날짜 사이 일수는 단순 뺄셈으로 충분하고, 결과 셀이 날짜 형식으로 나오면 일반 형식으로 바꿔야 숫자가 보인다.
- 근무일수는 NETWORKDAYS로 주말을 빼고, 공휴일 목록을 넘기면 명절·대체공휴일까지 제외할 수 있다.
- 만 나이·근속연수는 DATEDIF의 "Y", "M", "D" 단위로 계산하는데, 이 함수는 자동완성에 안 떠서 직접 타이핑해야 한다.
- 날짜가 텍스트로 들어오면 계산이 깨지므로 DATEVALUE나 형식 변환이 먼저다.
두 날짜 사이 일수: 그냥 빼면 된다
의외로 많이 헷갈리는 부분인데, 두 날짜의 차이는 함수 없이 뺄셈으로 나온다. A1에 입사일, B1에 오늘 날짜가 있다면 =B1-A1이 전부다. 엑셀 내부에서 날짜는 1900년 1월 1일을 1로 두는 일련번호라서, 빼면 일수가 떨어진다. 다만 결과 셀이 날짜 서식을 물려받아 "1900-02-15" 같은 이상한 값으로 보일 때가 있다. 이건 계산이 틀린 게 아니라 표시 형식 문제다. 셀 서식을 일반 또는 숫자로 바꾸면 정상적인 숫자가 나온다.
DATEDIF로 만 나이와 근속연수
년·월 단위로 차이를 보려면 DATEDIF가 편하다. 형식은 =DATEDIF(시작일, 종료일, "단위"). "Y"는 만으로 채운 햇수, "M"은 개월 수, "D"는 일수다. 만 나이는 =DATEDIF(생년월일, TODAY(), "Y")로 구한다. 근속 기간을 "3년 5개월"처럼 보고 싶다면 "Y"로 연수를, "YM"으로 1년 미만의 남은 개월을 따로 뽑아 합치는 식으로 쓴다. 주의할 점이 둘 있다. 시작일이 종료일보다 늦으면 오류가 나고, "MD" 단위는 월말 처리에서 가끔 음수나 이상한 값을 내는 것으로 알려져 있어 정밀한 일수가 필요하면 권하지 않는다.
| 단위 | 의미 | 예시 결과 |
|---|---|---|
| "Y" | 채운 햇수 | 3 |
| "M" | 전체 개월 수 | 41 |
| "YM" | 연 제외 남은 개월 | 5 |
NETWORKDAYS로 근무일수
주말을 빼고 실제 일한 날만 세려면 =NETWORKDAYS(시작일, 종료일, [공휴일])를 쓴다. 토·일을 자동으로 제외하고, 세 번째 인수에 공휴일이 적힌 범위를 넘기면 그 날짜들도 빠진다. 한국은 설·추석 연휴와 대체공휴일이 매년 달라서, 공휴일 셀 목록을 따로 만들어 참조하는 편이 안전하다. 주말이 토·일이 아닌 경우, 예를 들어 일요일만 쉬는 사업장이라면 NETWORKDAYS.INTL로 주말 패턴을 지정할 수 있다.
텍스트로 들어온 날짜 처리
외부에서 붙여넣은 날짜는 겉보기엔 날짜인데 실제로는 텍스트인 경우가 많다. 이러면 뺄셈이나 DATEDIF가 #VALUE! 오류를 낸다. 셀을 클릭했을 때 왼쪽 정렬이면 텍스트일 가능성이 높다. DATEVALUE로 변환하거나, 데이터 탭의 텍스트 나누기로 날짜 형식을 지정하면 풀린다. 연봉이나 급여 관련 자료를 다루다 보면 이런 형식 문제를 자주 만나는데, 계산 자체보다 데이터 정리에 시간이 더 걸리기도 한다. 실수령액 같은 금액 계산은 연봉 실수령액 도구로 따로 확인하는 편이 빠를 때가 있고, 퇴사를 앞뒀다면 퇴직금 계산도 함께 살펴두면 좋다.
자주 만나는 오류 정리
DATEDIF가 함수 목록에 안 보인다고 없는 함수로 오해하는 경우가 있다. 호환성을 위해 남겨둔 함수라 자동완성에 안 뜰 뿐, 정상 작동한다. 그리고 1900년 윤년 버그 때문에 아주 오래전 날짜는 하루 어긋날 수 있는데, 일상적인 근무일수 계산에서는 거의 문제되지 않는다. 결과가 음수로 나오면 시작일과 종료일 순서가 바뀐 건 아닌지 먼저 확인해보자.
결론
날짜 계산은 함수가 어렵다기보다 형식과 순서에서 막히는 일이 대부분이다. 단순 일수는 뺄셈, 햇수·개월은 DATEDIF, 주말 뺀 근무일은 NETWORKDAYS, 이 세 갈래만 기억하면 웬만한 계산은 해결된다. 오류가 날 때는 날짜가 진짜 날짜인지부터 점검하는 게 빠른 길이다.