엑셀 | DATEDIF는 목록에 안 뜨는데 제일 많이 쓴다
근속연수, 계약 만기, 주말과 휴무일 뺀 영업일. 날짜 계산은 함수 네 개면 거의 끝난다.
엑셀에서 날짜는 사실 숫자다. 1900년 1월 1일이 1이고 하루에 1씩 늘어난다. 그래서 날짜끼리 빼면 일수가 그냥 나온다.
문제는 “몇 년 몇 개월”이나 “주말 뺀 며칠” 같은 걸 물을 때다. 이때부터는 함수가 필요하다.
DATEDIF — 자동완성에 안 뜬다
=DAT까지 쳐 봐도 목록에 안 나온다. Lotus 1-2-3 시절 호환으로 남아 있는 함수라 문서에는 있는데 함수 마법사에는 없다. 그래도 근속연수를 구하려면 결국 이걸 쓰게 된다.
=DATEDIF(시작일, 종료일, "단위")
단위에 "Y"를 넣으면 만 년수, "M"은 만 개월수, "D"는 일수다. 그리고 "YM"이 있는데, 년을 뺀 나머지 개월수다. 이 둘을 이어 붙이면 “7년 4개월”이 나온다.
기준일을 셀 하나에 빼 두고 세 명을 계산해 봤다.

년·개월 표기를 만든 식은 이렇다.
=DATEDIF(B2,$G$2,"Y")&"년 "&DATEDIF(B2,$G$2,"YM")&"개월"
기준일을 TODAY()로 두면 열 때마다 갱신된다. 다만 갱신되는 게 늘 좋은 건 아니라서, 특정 시점 기준으로 고정해야 하는 표라면 위처럼 셀에 박아 두는 편이 낫다고 본다.
맨 오른쪽 근속일수는 함수도 필요 없다. 그냥 뺀 것.
=$G$2-B2
EDATE와 EOMONTH — 만기일과 말일
EDATE(날짜, 개월수)는 몇 개월 뒤(또는 앞) 같은 날짜를 준다. 12개월 뒤 만기, 3개월 뒤 갱신 같은 걸 구할 때 쓴다. 개월수에 음수를 넣으면 과거로 간다.
EOMONTH(날짜, 개월수)는 그 달의 말일을 준다. 0이면 그 달, 1이면 다음 달 말일. 매월 말일 마감이나 정산일을 잡을 때 요긴하다.
31일에 시작한 계약이 2월로 넘어가면 어떻게 되는지가 궁금할 텐데, EDATE는 그 달에 없는 날이면 말일로 당겨 준다. 1월 31일에서 1개월 뒤는 2월 28일(또는 29일).
NETWORKDAYS — 주말과 휴무일을 뺀다
NETWORKDAYS(시작일, 종료일, [휴무일범위])는 토·일을 자동으로 빼고 센다. 세 번째 인수에 날짜 목록을 주면 그것도 뺀다. 시작일과 종료일 둘 다 포함이라는 점만 기억하면 된다.

8월 3일 월요일부터 21일 금요일까지 딱 3주. 주말만 빼면 15일이고, 휴무일 이틀을 더 빼니 13일이 됐다.
토·일이 아니라 다른 요일을 쉬는 곳이라면 NETWORKDAYS.INTL을 쓴다. 두 번째가 아니라 세 번째 인수로 주말 패턴 번호를 받는다. 반대로 “영업일 기준 10일 뒤가 며칠이냐”를 구하는 건 WORKDAY다.
자주 걸리는 것
날짜가 텍스트로 들어와 있다. 다른 시스템에서 받은 2026-08-03이 문자열이면 계산이 다 깨진다. 셀에서 오른쪽 정렬이면 날짜, 왼쪽 정렬이면 텍스트라고 보면 대체로 맞다. DATEVALUE로 바꾼다.
뺐더니 날짜가 나온다. 날짜에서 날짜를 뺀 칸이 서식을 물려받아 “1907-04-15” 같은 게 뜬다. 그 칸 서식을 일반이나 숫자로 바꾸면 된다.
DATEDIF의 "MD"는 쓰지 않는 게 낫다. 월말이 끼면 음수가 나오는 알려진 버그가 있다. 년·개월까지만 쓰고 일 단위가 필요하면 그냥 빼는 쪽이 안전하다.
결론. 기준일은 셀 하나로 빼 두자
TODAY()를 식마다 박아 넣는 대신 기준일 칸을 하나 만들어 두면, 나중에 “작년 말 기준으로 다시 뽑아 줘” 같은 요청이 왔을 때 그 칸만 고치면 끝난다. 이번에 만들면서 제일 잘한 것 같은 게 그거였다.
다음엔 이 표에 조건부 서식을 걸어 만기 임박한 줄만 색칠하는 걸 해 봐야겠다.