거래처코드 앞자리 0이 사라질 때: CSV 열기 전에 막는 안전한 가져오기
ERP나 쇼핑몰 관리자에서 내려받은 CSV 파일을 엑셀로 열었는데, 거래처코드나 상품코드 앞자리 0이 감쪽같이 사라지는 일이 있습니다. 예를 들어 원본에는 001245라고 되어 있었는데 엑셀에서는 1245로 보이는 식입니다. 겉보기에는 별일 아닌 것 같지만, 실무에서는 이 한 자리 때문에 매칭 실패, 중복 등록, 발주 오류까지 이어질 수 있습니다.
특히 코드값을 기준으로 VLOOKUP, XLOOKUP, 피벗, Power Query 병합을 돌리는 파일이라면 더 조심해야 합니다. 코드가 숫자로 바뀌는 순간 엑셀은 “표시만 바뀐 것”이 아니라 데이터의 성격 자체를 숫자로 해석해 버립니다. 오늘은 이 문제를 실제 업무 흐름 기준으로, 어디서 자주 터지는지와 안전하게 막는 방법까지 정리해 보겠습니다.

실무에서 자주 터지는 실수 사례
가장 흔한 장면은 CSV 파일을 더블클릭해서 바로 여는 경우입니다. 파일을 열자마자 엑셀이 자동으로 열 형식을 추측하면서, 코드처럼 생긴 값도 숫자로 판단합니다. 이때 앞자리 0은 숫자 계산에 필요 없다고 보고 제거됩니다.
| 원본 CSV 값 | 엑셀에서 자동 해석 후 | 문제 상황 |
|---|---|---|
| 001245 | 1245 | 거래처코드 매칭 실패 |
| 000078 | 78 | 상품코드 중복처럼 보임 |
| 01012345678 | 1012345678 | 연락처 앞자리 0 손실 |
| 20240601 | 20240601 또는 날짜로 변환 | 일자/코드 혼동 |
문제는 여기서 끝나지 않습니다. 사용자가 뒤늦게 셀 서식을 000000처럼 지정하면 화면상으로는 다시 001245처럼 보일 수 있습니다. 하지만 이건 어디까지나 표시 형식입니다. 실제 값은 여전히 숫자 1245입니다. 보고서 출력용이라면 잠깐 버틸 수 있지만, 다른 시스템에 업로드하거나 다른 표와 병합할 때는 다시 문제가 됩니다.
왜 단순한 서식 변경으로는 부족할까
엑셀에서 셀 값과 셀 서식은 분리되어 있습니다. 값이 숫자 1245인 상태에서 표시 형식만 000000으로 바꾸면 눈에는 001245로 보입니다. 하지만 수식, 비교, 외부 저장 과정에서는 원래 값이 사용될 수 있습니다. 실무 파일에서 “분명히 코드가 같은데 조회가 안 된다”는 이야기가 나오는 이유가 여기에 있습니다.
=A2=B2
위 비교식에서 A2는 텍스트 001245, B2는 숫자 1245에 표시 형식만 적용된 값이라면 결과가 기대와 다르게 나올 수 있습니다. 보기에는 같아 보여도 엑셀 내부에서는 서로 다른 값으로 취급되는 셈입니다.
흔한 실수도 같이 봐두면 좋습니다. 아래 상황은 실제 정산, 상품 등록, 거래처 관리 파일에서 자주 나옵니다.
- CSV를 더블클릭해서 열고 그대로 저장한다.
- 앞자리 0이 사라진 뒤 셀 서식만 바꿔서 해결했다고 생각한다.
VALUE함수로 코드 열을 숫자로 바꾼다.- 붙여넣기할 때 대상 셀 서식을 일반으로 둔다.
- Power Query에서 자동 생성된
변경된 유형단계를 그대로 둔다.
안전한 처리법: 열기 전에 형식을 먼저 잡기
이미 깨진 뒤에 고치는 것보다, 가져오는 순간부터 텍스트로 고정하는 편이 훨씬 안전합니다. CSV나 TXT 파일은 더블클릭으로 열지 말고, 빈 통합문서에서 가져오는 방식으로 처리하는 것을 추천합니다.
엑셀 메뉴 기준으로는 데이터 > 텍스트/CSV에서를 사용합니다. 파일을 선택한 뒤 바로 로드하지 말고 데이터 변환으로 들어갑니다. Power Query 편집기가 열리면 거래처코드, 상품코드, 연락처처럼 앞자리 0이 의미 있는 열을 선택하고 데이터 형식을 텍스트로 지정합니다.
특히 Power Query가 자동으로 만든 변경된 유형 단계가 있다면 꼭 확인해야 합니다. 이 단계에서 코드 열이 숫자 형식으로 잡혀 있으면 이미 앞자리 0이 날아갈 수 있습니다. 필요하다면 해당 단계를 삭제한 뒤, 코드 열을 텍스트로 다시 지정하세요.
Table.TransformColumnTypes(
원본,
{
{"거래처코드", type text},
{"상품코드", type text},
{"연락처", type text},
{"수량", Int64.Type},
{"금액", Int64.Type}
}
)
위 예시는 코드와 연락처는 텍스트로, 계산해야 하는 수량과 금액은 숫자로 처리하는 방식입니다. 모든 열을 무조건 텍스트로 가져오면 합계나 평균 계산에서 또 다른 문제가 생길 수 있으니, 열의 역할에 따라 형식을 나누는 것이 핵심입니다.
이미 앞자리 0이 사라진 파일은 어떻게 볼까
원본 파일이 아직 있다면 가장 좋은 방법은 다시 가져오는 것입니다. 이미 숫자로 변환되어 저장된 엑셀 파일만 남아 있다면, 원래 코드 길이를 알고 있을 때에만 일부 복구가 가능합니다.
=TEXT(A2,"000000")
예를 들어 거래처코드가 항상 6자리라면 위 수식으로 1245를 001245 형태의 텍스트로 만들 수 있습니다. 다만 코드 길이가 제각각이거나, 원래 값이 01245인지 001245인지 알 수 없는 경우에는 완전한 복구가 어렵습니다. 이때는 반드시 원본 CSV, 시스템 다운로드 내역, 백업 파일을 확인해야 합니다.
복구 여부를 판단할 때는 아래처럼 길이를 먼저 점검해 보세요.
=LEN(A2)
코드가 텍스트로 잘 들어왔다면 길이가 원본 자리수와 맞아야 합니다. 반대로 앞자리 0이 사라졌다면 길이가 짧게 나옵니다. 이 점검은 업로드 전 검수표에 넣어두면 꽤 유용합니다.
점검 포인트: 가져온 직후 바로 확인할 것
데이터를 가져온 뒤에는 바로 피벗이나 조회 수식을 만들기보다, 코드 열의 상태를 먼저 확인하는 습관이 좋습니다. 아래 항목은 파일을 받은 직후 1분 안에 확인할 수 있는 내용입니다.
- 코드 열의 왼쪽 위에 초록색 오류 표시가 있는지 확인한다.
- 대표 코드 몇 개를 원본 CSV와 대조한다.
LEN함수로 자리수가 일정한지 확인한다.- Power Query의 마지막 단계에서 코드 열 형식이 텍스트인지 본다.
- 저장 후 다시 열었을 때도 코드가 유지되는지 테스트한다.
여기서 초록색 오류 표시는 무조건 나쁜 신호는 아닙니다. “숫자가 텍스트로 저장되어 있음”이라는 안내가 뜰 수 있는데, 코드값이라면 오히려 정상일 수 있습니다. 중요한 건 이 열이 계산 대상인지, 식별자인지 구분하는 것입니다. 거래처코드, 상품코드, 사번, 우편번호, 연락처는 대부분 계산 대상이 아니라 식별자입니다.
자동화 팁: 매번 같은 형식으로 들어오게 만들기
매주 같은 양식의 CSV를 받는다면 Power Query를 한 번만 제대로 만들어 두는 편이 좋습니다. 쿼리에서 열 형식을 명확히 지정해 두면, 다음부터는 파일만 교체하고 새로 고침하면 됩니다. 이 방식은 담당자가 바뀌어도 실수가 줄어드는 장점이 있습니다.
조금 더 관리하기 좋게 하려면 원본 데이터를 엑셀 표로 불러온 뒤, 검수용 열을 추가해도 좋습니다.
| 검수 항목 | 예시 수식 | 의미 |
|---|---|---|
| 코드 길이 확인 | =LEN([@거래처코드])=6 | 6자리 코드인지 확인 |
| 빈 코드 확인 | =[@거래처코드]<>"" | 누락값 방지 |
| 숫자 변환 위험 확인 | =LEFT([@거래처코드],1)="0" | 앞자리 0 코드 여부 확인 |
VBA를 쓰는 환경이라면 업로드 전 검수용으로 코드 열을 텍스트 서식으로 고정하는 간단한 절차도 만들 수 있습니다. 단, 이미 앞자리 0이 사라진 값을 되살리는 용도가 아니라, 붙여넣기 전에 열 성격을 고정하는 용도로 보는 것이 맞습니다.
Sub 코드열_텍스트서식_지정()
With ActiveSheet
.Columns("A:A").NumberFormat = "@"
.Columns("B:B").NumberFormat = "@"
End With
MsgBox "코드 열을 텍스트 서식으로 지정했습니다. 이제 원본 값을 붙여넣으세요."
End Sub
이 매크로는 A열과 B열을 텍스트 서식으로 바꿉니다. 이후 원본 데이터를 붙여넣으면 앞자리 0이 유지될 가능성이 높습니다. 다만 CSV를 더블클릭해서 이미 열린 상태라면 늦을 수 있으니, 가져오기 전 또는 붙여넣기 전에 실행하는 흐름으로 사용해야 합니다.
현장에서 기억할 한 줄 기준
계산할 값은 숫자, 식별할 값은 텍스트입니다. 코드, 사번, 연락처, 우편번호처럼 앞자리 0이 의미 있는 열은 절대 일반 숫자처럼 다루지 않는 것이 안전합니다. CSV는 더블클릭으로 열지 말고 데이터 가져오기로 불러오기, Power Query의 변경된 유형 단계 확인하기, 업로드 전 LEN으로 자리수 점검하기. 이 세 가지만 지켜도 앞자리 0 때문에 생기는 사고는 대부분 줄일 수 있습니다.