본문 바로가기
엑셀 실무

엑셀_나이계산

by RichFebru 2026. 9. 12.
반응형

엑셀에서 만 나이를 구하려면 =DATEDIF(생년월일, TODAY(), "Y") 하나면 됩니다. 생일이 지났는지까지 자동으로 반영됩니다. 그런데 이 DATEDIF 함수는 엑셀 함수 목록에 나타나지 않아서 존재 자체를 모르는 분이 많습니다. 그래서 =(TODAY()-생년월일)/365 같은 방식을 쓰다가 나이가 하루 이틀씩 틀어집니다.

나이는 세 가지가 있습니다

한국은 2023년 6월부터 만 나이로 통일됐지만, 실무에서는 여전히 셋을 구분해서 써야 합니다.

구분 계산법 1990년 5월 20일생 (2026년 9월 기준)
만 나이 생일 지났으면 +1 36세
연 나이 올해 − 태어난 해 36세
세는 나이 연 나이 + 1 37세

같은 사람인데 기준에 따라 다릅니다. 보험·병역·주민등록은 만 나이, 일부 행정 기준은 연 나이를 씁니다. 어느 쪽인지 확인하고 계산하세요.

1. 만 나이 — DATEDIF

=DATEDIF(B2, TODAY(), "Y")

B2에 생년월일이 있으면 만 나이가 나옵니다.

주의: 이 함수는 자동완성 목록에 안 뜹니다. =DAT 까지 쳐도 DATEDIF는 나타나지 않습니다. 그래도 정상 작동하니 이름을 끝까지 직접 입력하세요. 하위 호환용으로 남겨 둔 함수라 문서화가 안 되어 있을 뿐입니다.

특정 날짜 기준으로 계산하려면

=DATEDIF(B2, $D$1, "Y")

D1에 기준일을 넣어 두면 "입사일 기준 나이" 같은 것도 구할 수 있습니다.

"OO세 O개월"로 표시

=DATEDIF(B2,TODAY(),"Y") & "세 " & DATEDIF(B2,TODAY(),"YM") & "개월"

2. 연 나이 — YEAR

=YEAR(TODAY()) - YEAR(B2)

생일과 무관하게 연도만 뺍니다. 일부 병역·행정 기준에서 씁니다.

3. 세는 나이 (한국식 나이)

=YEAR(TODAY()) - YEAR(B2) + 1

지금은 공식적으로 쓰지 않지만, 기존 자료를 변환할 때 필요할 수 있습니다.

4. 왜 365로 나누면 안 되나

=(TODAY()-B2)/365

이 방식은 윤년 때문에 오차가 쌓입니다. 4년마다 하루씩 어긋나서 40세쯤 되면 열흘 가까이 틀어집니다. 생일 전후에 나이가 잘못 나옵니다.

/365.25로 바꿔도 근본 해결이 안 됩니다. 반드시 DATEDIF를 쓰세요.

퇴직금이나 연차 계산에 이 방식을 쓰면 분쟁의 소지가 됩니다.

5. 실무에서 자주 쓰는 응용

정년까지 남은 기간

=DATE(YEAR(B2)+60, MONTH(B2), DAY(B2)) - TODAY()

60세 생일까지 남은 일수입니다. 연 단위로 보려면

=60 - DATEDIF(B2, TODAY(), "Y")

만 나이로 연령대 구분

=IF(C2<20,"10대", IF(C2<30,"20대", IF(C2<40,"30대", IF(C2<50,"40대", IF(C2<60,"50대","60대 이상")))))

C2에 만 나이가 있다고 가정한 수식입니다.

생일이 이번 달인 사람 표시

=IF(MONTH(B2)=MONTH(TODAY()), "이번 달 생일", "")

만 19세 이상인지 판정 (성인 여부)

=IF(DATEDIF(B2,TODAY(),"Y")>=19, "성인", "미성년")

보험 나이 (상령일 기준)

보험은 만 나이에 6개월을 더해 반올림하는 방식을 씁니다.

=DATEDIF(B2, TODAY(), "Y") + IF(DATEDIF(B2, TODAY(), "YM")>=6, 1, 0)

만 나이 이후 6개월이 지났으면 한 살 더합니다. 보험사마다 기준이 다를 수 있으니 실제 가입 시에는 해당 보험사 기준을 확인하세요.

 

엑셀 나이계산 함수
엑셀 나이계산 함수

6. 주민등록번호로 생년월일 뽑기

=DATE(
  IF(MID(A2,8,1)="1", 1900, IF(MID(A2,8,1)="2", 1900,
    IF(MID(A2,8,1)="3", 2000, IF(MID(A2,8,1)="4", 2000, 1900)))) + VALUE(LEFT(A2,2)),
  VALUE(MID(A2,3,2)),
  VALUE(MID(A2,5,2)))

뒷자리 첫 숫자로 1900년대인지 2000년대인지 판단합니다. 1·2는 1900년대, 3·4는 2000년대입니다.

주의: 주민등록번호는 민감한 개인정보입니다. 꼭 필요한 경우가 아니면 다루지 마세요. 파일을 공유할 때는 반드시 마스킹하고, 보관 기간이 지나면 삭제해야 합니다.

7. 자주 나오는 문제

문제 1. DATEDIF가 #NAME? 오류를 냅니다

함수 이름 오타이거나 한글 입력 상태로 입력한 경우입니다. 영문 입력 상태에서 DATEDIF를 정확히 치세요.

문제 2. #NUM! 오류가 납니다

시작일이 종료일보다 나중입니다. 인수 순서를 확인하세요. 생년월일이 먼저입니다.

문제 3. 생년월일이 왼쪽 정렬되어 있습니다

날짜가 아니라 텍스트로 저장된 것입니다. 1990.05.20 처럼 점으로 입력하면 이렇게 됩니다.

해결: 바꾸기(Ctrl+H)로 점을 하이픈으로 바꾼 뒤, 데이터 → 텍스트 나누기를 마침까지 눌러 변환하세요. 자세한 내용은 초록색 삼각형 없애는 법에 정리했습니다.

문제 4. 나이가 날짜로 표시됩니다

결과 셀의 서식이 날짜로 되어 있습니다. 홈 → 표시 형식을 일반으로 바꾸세요.

문제 5. 파일을 열 때마다 나이가 바뀝니다

TODAY()를 썼기 때문입니다. 이게 정상 동작입니다. 특정 시점으로 고정하려면 기준일 셀을 따로 만들어 참조하세요.

8. DATEDIF 단위 코드 정리


코드 의미
"Y" 만 년수 (나이)
"M" 만 개월수
"D" 총 일수
"YM" 년을 뺀 나머지 개월
"MD" 월을 뺀 나머지 일
"YD" 년을 뺀 나머지 일

Y, YM, MD를 조합하면 "36세 3개월 18일" 같은 표기를 만들 수 있습니다.

마무리

만 나이는 DATEDIF 하나면 끝입니다. 함수 목록에 안 뜨니 이름만 기억해 두세요.

그리고 365로 나누는 습관은 오늘 버리시길 권합니다. 나이든 근속연수든 마찬가지입니다.

엑셀나이계산함수.xlsx
0.01MB

관련 글

공식 출처

 

반응형