엑셀에서 앞자리 0이 사라질 때
작성일:
CSV 파일을 엑셀에서 열었더니 사번 007이 7로, 휴대폰 번호 01012345678이 1012345678로, 주문번호 12345678901234567890이 1.23457E+19로 바뀌어 있었던 적이 있나요? 엑셀이 “숫자처럼 생긴 값”을 자동으로 숫자로 바꾸면서 생기는 일입니다.
왜 0이 사라질까?
엑셀은 CSV를 열 때 각 칸을 보고 “숫자처럼 보이면 숫자로” 바꿉니다. 숫자 7과 007은 수학적으로 같은 값이라 앞의 0은 의미 없는 것으로 보고 버립니다.
하지만 현실의 데이터에서는 이런 값이 **숫자가 아니라 이름표(코드)**인 경우가 많습니다.
- 우편번호, 사번, 학번, 상품 코드:
007,012345 - 전화번호:
01012345678 - 주민등록번호 앞자리, 계좌번호, 카드번호
15자리가 넘는 번호는 더 위험합니다
엑셀은 숫자를 유효숫자 15자리까지만 정확하게 저장합니다. 16자리가 넘는 번호를 숫자로 바꾸면 뒷자리가 0으로 바뀌고, 화면에는 1.23457E+19처럼 지수 형태로 표시됩니다. 이렇게 바뀐 상태로 저장하면 원래 번호는 되돌릴 수 없습니다. 카드번호(16자리)나 긴 주문번호에서 자주 생기는 사고입니다.
해결 방법 1: 엑셀에서 열 형식을 “텍스트”로 지정해 가져오기
- 엑셀에서 데이터 → 텍스트/CSV에서로 파일을 고릅니다.
- 미리보기 창에서 데이터 변환을 누릅니다(파워 쿼리 편집기가 열립니다).
- 0을 지켜야 하는 열의 머리글 왼쪽 아이콘을 누르고 데이터 형식을 텍스트로 바꿉니다. “현재 바꾸기”를 고릅니다.
- 닫기 및 로드를 누릅니다.
정확하지만 열이 많으면 번거롭고, 파일을 열 때마다 반복해야 합니다.
해결 방법 2: CSV를 XLSX로 변환하면서 값 지키기
CSV → XLSX 변환기는 데이터를 망가뜨리지 않도록 보수적으로 숫자를 판단합니다.
42,3.14처럼 의심의 여지가 없는 숫자만 숫자로 바꿉니다.007처럼 앞자리가 0인 값은 글자 그대로 둡니다.- 15자리를 넘는 번호는 글자 그대로 둡니다.
1,234처럼 쉼표가 들어간 값도 원래 모습 그대로 둡니다.
모든 값을 무조건 글자로 두고 싶다면 옵션의 “값 처리”에서 모두 글자로 유지를 고르세요. 변환한 XLSX는 엑셀에서 열어도 0이 사라지지 않습니다.
같은 원리로 CSV → JSON도 앞자리 0과 긴 번호를 문자열로 지켜 줍니다.
해결 방법 3: 이미 엑셀에 있는 데이터를 CSV로 내보낼 때
엑셀 안에서 셀 서식이 텍스트로 되어 있는 값(왼쪽 위에 초록 삼각형이 보이는 셀)은 XLSX → CSV로 내보낼 때 007 그대로 저장됩니다. 숫자 서식 000으로 0을 “보이게만” 만든 셀은 화면에 보이는 모습(007)으로 내보냅니다.
예방 팁
- 코드·번호 열은 처음부터 텍스트로 다루세요. 계산할 일이 없는 값은 숫자일 필요가 없습니다.
- CSV를 엑셀에서 열고 바로 저장하지 마세요. 이미 0이 사라진 상태로 덮어쓰게 됩니다.
- 중요한 데이터는 CSV보다 XLSX로 주고받는 것이 안전합니다.
정리
앞자리 0이 사라지는 것은 엑셀이 코드를 숫자로 오해해서 생기는 문제입니다. 열 형식을 텍스트로 지정해 가져오거나, 값을 보수적으로 처리하는 변환기로 XLSX를 만들어 두면 안전합니다. CSV와 XLSX의 차이는 CSV와 XLSX, 언제 무엇을 쓸까 가이드에서 자세히 다룹니다.