엑셀에서 CSV 전화번호가 깨지는 이유와 완벽 해결법

+로 시작하는 전화번호가 왜 수식으로 계산되는지, 근본 원인과 해결 방법을 자세히 설명합니다.

어떤 현상인가

vcf 파일을 CSV로 변환해서 엑셀로 열었더니, +82-10-1234-5678처럼 멀쩡했던 전화번호가 60, 71 같은 뜬금없는 숫자로 바뀌어 있는 경우가 있습니다. 심지어 셀을 클릭해 수식 입력줄을 보면 =82-10-1234-5678 같은 수식이 들어가 있기도 합니다.

근본 원인: 엑셀의 "친절한" 자동 인식

엑셀과 구글 시트는 셀 내용이 =, +, -, @ 로 시작하면 이것을 일반 텍스트가 아니라 수식으로 해석합니다. 원래 이 규칙은 사용자가 값을 입력했을 때 "이건 계산해달라는 뜻이겠지"라고 추측해서 편의를 봐주려고 만든 기능입니다.

문제는 국제 전화번호 표기 방식(+82-10-1234-5678)도 이 조건에 정확히 들어맞는다는 점입니다. 엑셀 입장에서는 이 값이 "82에서 10을 빼고, 1234를 빼고, 5678을 빼라"는 뺄셈 수식처럼 보입니다. 실제로 계산해보면:

82 - 10 = 72
72 - 1234 = -1162
-1162 - 5678 = -6840

(자릿수나 0 처리 방식에 따라 실제 결과 값은 다르게 나올 수 있지만, 원리는 "부호와 하이픈을 산술 기호로 오인해 뺄셈을 수행한다"는 것입니다.) 이건 CSV 파일 자체의 결함이 아니라, 엑셀이 파일을 열 때 셀 형식을 추측하는 방식의 오래된 한계입니다.

일반적인 해결 방법 3가지

vcf2what은 이미 이걸 자동으로 처리합니다 — 범용 CSV는 전화번호 칸에 값이 있으면 항상 위 2번 방법(작은따옴표 접두)을 자동으로 적용해서 내보냅니다. 최신 버전으로 변환한 CSV는 엑셀에서 바로 열어도 전화번호가 텍스트 그대로, 깨지지 않고 표시됩니다.

그런데 Google CSV·Outlook CSV는 다릅니다

Google CSV와 Outlook CSV는 일부러 이 처리를 하지 않습니다. 이 두 형식은 엑셀에서 보라고 만든 게 아니라 구글 연락처·아웃룩의 가져오기 기능이 값을 있는 그대로 읽어들이는 전용 포맷이기 때문에, 여기에 작은따옴표를 붙이면 오히려 가져온 연락처에 이상한 문자가 섞여 들어가는 새로운 문제가 생깁니다. 용도에 맞는 형식을 그대로 사용하시면 됩니다.

요약

← vcf2what으로 돌아가서 바로 변환해보기