- 최초 작성일: 2000-08-17
- 최종 수정일: 2026-09-29
- 조회수: 39 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: 주민등록번호를 날짜로 변환하기
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
질문 하나
안녕하세요. 저는 OOOOOO에 다니는 AAA라고 합니다.
exceller님의 강좌로부터 많은 도움을 받고 있습니다. 감사합니다.
한 가지 질문이 있습니다.
주민등록번호를 가지고 생년월일을 구하는 방법에 대해 알려주시면 고맙겠습니다. 문자열 함수를 써서
할 수도 있겠으나 그렇게 하면 700011과 같이 되어 버려서 나중에 서식을 바꾸어 주려고 하면 이상한
숫자값이 나와 버려서 곤란하더군요.
무슨 방법이 없을까요?
더운 날씨에 항상 건강하십시오.
주민등록번호를 날짜로 변환하기
핵심 요약
- 주민등록번호 앞 여섯 자리는 LEFT나 MID 같은 문자열 함수로 연·월·일 부분을 각각 추출할 수 있습니다.
- 추출한 문자열을 DATE 함수의 연·월·일 인수로 전달하면 서식 변경이 가능한 실제 날짜 값으로 변환됩니다.
- Excel은 숫자 형태의 문자열도 DATE 함수 안에서 숫자로 해석하므로 별도의 숫자 변환 함수 없이 사용할 수 있습니다.
위 질문하신 분은 가구회사에 근무하시는 분인데 Exceller가 2세를 출산하면 가구를 싸게 파시겠다고 하신 분입니다. 감사합니다. ^^
먼저, 소스 테이블을 하나 만들고…
| 주민등록번호 | 생년월일 |
| 700808-1111000 | 700808 |
| 691113-1212123 | 691113 |
| 800101-2020123 | 800101 |
| 601203-2011359 | 601203 |
| 630530-1234123 | 630530 |
주민등록번호에서 생년월일을 발췌하는 것은 어떻게 하면 될까요? 보통의 분들은 "=left(a28, 6)" 아마 이렇게 하시겠지요?
그러면 이 자료를 가지고 "70-08-08"과 같이 년-월-일 형태로 바꾸어 주려면 어떻게 해야 할까요? Date() 함수에 대해 설명을 드렸던가요? 아주 예전에 드린 기억이 있군요. 스피너와 스크롤바에 대해 설명을 드릴 때 세 개의 숫자를 조합해서 날짜 형태로 바꾸는 방법에 대해 소개해 드렸었지요?
아래의 표에서 "생년월일2" 부분을 보세요. 원하는 형태로 되어 있지요?
| 주민등록번호 | 생년월일 | 생년월일2 |
| 700808-1111000 | 700808 | 1970-08-08 |
| 691113-1212123 | 691113 | 1969-11-13 |
| 800101-2020123 | 800101 | 1980-01-01 |
| 601203-2011359 | 601203 | 1960-12-03 |
| 630530-1234123 | 630530 | 1963-05-30 |
위의 빨간 셀에는 이런 수식이 들어 있습니다.
=DATE(LEFT(B44,2),MID(B44,3,2),MID(B44,5,2))
참고: 이 수식은 두 자리 연도를 1900년대로 계산합니다(DATE 함수는 0~1899의 연도에 1900을 더합니다). 주민등록번호 뒷자리 첫 숫자가 3 또는 4인 2000년대 출생자는 연도에 2000을 더하는 등 별도 처리가 필요합니다. 또한 수식의 B44는 원본 워크시트 기준 셀 주소입니다.
Left()와 mid() 함수를 써서 원하는 자리의 숫자를 발췌해 온 후, 이것을 date() 함수로 조합을 해 준 것 이지요. 어려운 것이 하나도 없을 것입니다. 또는 "=date(left(b44,2), mid(b44,3,2), right(c44,2))"라고 해도 되겠군요.
그런데 혹시 이런 의문을 가지시는 분이 없으신지? "left()나 right()함수는 문자열을 돌려준다고 했고, date() 함수는 세 개의 숫자를 조합해서 날짜를 만든다 고 했는데 도대체 어떻게 된 것입니까?"
이런 의문이 드시는 분이라면 강좌를 아주 제대로 공부하시고 있는 분입니다. 결론을 말씀드리자면 "둘 다 옳습니다!!!" date() 함수는 세 가지 (유효한) 숫자를 인수로 받아서 년/월/일을 돌려주는 함수입니다만 똑 똑하기로 정평이 난 Excel이 숫자 형태의 문자열 데이터도 (내부적으로) 숫자로 치환하여 날짜를 되돌려 주는 것입니다.
오늘은 짧게 여기까지 하지요.
그럼…
정리 — 주민등록번호를 날짜로 변환하기
| 구분 | 내용 |
|---|---|
| 문제 | 주민등록번호 앞자리 문자열을 서식 변경이 가능한 실제 날짜 값으로 변환 |
| 수식 | =DATE(LEFT(B44,2),MID(B44,3,2),MID(B44,5,2)) |
| 다른 방법 | =date(left(b44,2), mid(b44,3,2), right(c44,2)) (c44는 앞 6자리를 발췌한 셀) |
| 핵심 | 숫자 형태의 문자열도 Excel이 내부적으로 숫자로 바꿔 DATE 함수가 처리 |
| 결과 예 | 700808 → 1970-08-08 |
자주 묻는 질문 (FAQ)
Q1. 주민등록번호에서 생년월일을 날짜로 만들려면 어떻게 하나요?
LEFT와 MID 함수로 연, 월, 일 부분을 각각 추출한 뒤 DATE 함수의 인수로 넘기면 실제 날짜 값이 만들어집니다.
Q2. LEFT 함수는 문자열을 돌려주는데 DATE에 써도 되나요?
됩니다. DATE 함수는 숫자를 인수로 받지만 Excel이 숫자 형태의 문자열도 내부적으로 숫자로 바꿔 처리하기 때문입니다.
Q3. 6자리 숫자를 그대로 두지 않고 날짜로 바꾸는 이유는 무엇인가요?
LEFT로 잘라낸 값은 문자열이라 나중에 서식을 바꾸려 해도 원하는 날짜 서식이 적용되지 않습니다. DATE 함수로 변환하면 서식을 자유롭게 바꿀 수 있습니다.
마치며
문자열 함수로 잘라 낸 값을 DATE 함수로 조합하면 서식을 자유롭게 바꿀 수 있는 날짜로 변환됩니다. VBA에 대한 기초 지식을 공부하실 분은 아이엑셀러 닷컴 사이트 상단 메뉴에서 [Excel 강의] - [Excel 입문]을 먼저 보시면 이해하기 쉽습니다.