Contents 호환성 문제의 정의와 증상 분류 즉시 조치 체크리스트(빠른 복구) 파일 형식별 특성과 선택 기준 버전 차이로 인한 기능 손실과 대체 전략 조직 환경 차이: 32/64비트, 추가기능, 보안 정책 CSV·텍스트 파일 호환성: 인코딩·구분 기호·서식 날짜·숫자 변형 방…
글 전체 보기- 공유 링크 만들기
- X
- 이메일
- 기타 앱
Contents 호환성 문제의 정의와 증상 분류 즉시 조치 체크리스트(빠른 복구) 파일 형식별 특성과 선택 기준 버전 차이로 인한 기능 손실과 대체 전략 조직 환경 차이: 32/64비트, 추가기능, 보안 정책 CSV·텍스트 파일 호환성: 인코딩·구분 기호·서식 날짜·숫자 변형 방…
글 전체 보기이 글의 목적은 엑셀의 “텍스트 나누기(구분)” 기능과 CSV·TSV 데이터 분할 과정에서 자주 발생하는 오류의 원인을 체계적으로 진단하고, 실무에서 바로 적용할 수 있는 해결책과 검증 절차를 제공하는 것이다.
텍스트 나누기(구분)는 한 셀 또는 붙여넣은 텍스트에서 구분 기호(쉼표, 탭, 세미콜론, 사용자 정의 기호 등) 또는 고정 너비를 기준으로 데이터를 열 단위로 분리하는 기능이다. 핵심 요소는 세 가지이다.
| 증상 | 원인 | 즉시 대처 |
|---|---|---|
| 따옴표로 감싼 값 내부의 쉼표로 열이 더 생김 | 텍스트 한정자 미설정 또는 데이터에 혼용된 따옴표 | 마법사 2단계에서 텍스트 한정자 " 지정, 혼용된 ‘/”는 사전 정규화 |
| 우편번호·상품코드의 앞자리 0이 사라짐 | 숫자 자동 변환 | 해당 열 서식을 “텍스트”로 지정 또는 사용자 지정 000000 |
| 2025-10-01이 2025년 10월 1일로 날짜화됨 | 자동 날짜 추론 | 열 서식을 “텍스트”로 지정, 필요 시 분리 후 TEXT 함수로 표시 제어 |
| 1,234가 1.234 또는 1234로 바뀜 | 천단위/소수점 구분자 지역 차이 | 데이터->텍스트 나누기 마법사 3단계에서 “고급” 구분자 설정 |
| 한글 깨짐(� 표시) | 파일 인코딩 불일치 | 데이터 가져오기에서 인코딩 UTF-8/ANSI 재지정 또는 Power Query 사용 |
| 연속 공백이 의도치 않게 분리 | 공백을 구분 기호로 지정 | 공백 구분 해제 또는 “연속 구분 기호 하나로 처리” 설정 |
| 필드 끝에 보이지 않는 공백으로 매칭 실패 | 비분리 공백(CHAR(160)) 존재 | 정규화 수행: SUBSTITUTE/ TRIM/ CLEAN 결합 |
| 열 개수 매 줄 불일치 | 누락된 따옴표, 줄바꿈 포함 필드 | 텍스트 한정자 점검, 줄바꿈은 한정자 내 존재해야 정상 파싱 |
=TRIM(SUBSTITUTE(SUBSTITUTE(CLEAN(A2),CHAR(160)," ")," "," ")) 설명한다. CLEAN은 인쇄 불가 문자를 제거한다. CHAR(160)은 비분리 공백이다. TRIM은 양끝과 중복 공백을 줄인다.
=SUBSTITUTE(SUBSTITUTE(A2,"“",""""),"”","""") 한국어 문서에서 방향따옴표가 섞여 있을 때 “텍스트 한정자" 인식 실패가 발생한다. 위 방식으로 표준 쌍따옴표로 통일한다.
유럽식 CSV는 세미콜론으로 구분하고 소수점은 콤마를 사용한다. 다음처럼 임시 치환으로 혼동을 줄인다.
=SUBSTITUTE(A2,";","|") ' 구분자는 | 로 임시 치환 텍스트 나누기 3단계 → 열 선택 → “텍스트” 셀 서식 → 사용자 지정 → 000000 ' 6자리 강제 표시 =TEXT(A2,"000000") CSV가 “2025-03-07”을 포함할 때 일부 지역 설정에서 3월 7일로, 다른 환경에서는 7월 3일로 해석될 수 있다. 안전책은 다음과 같다.
=DATE(VALUE(LEFT(A2,4)),VALUE(MID(A2,6,2)),VALUE(RIGHT(A2,2))) CRM·폼 데이터에는 필드 내부 줄바꿈(Alt+Enter)이 존재한다. 올바른 CSV는 이런 줄바꿈을 쌍따옴표로 감싼다. 해결 순서는 다음과 같다.
CSV가 UTF-8, UTF-8 BOM, ANSI(Windows-1252/949) 등 다양한 인코딩을 가진다. 엑셀에서 파일을 바로 열면 잘못된 코드페이지로 해석될 수 있다. 다음이 안전하다.
고정 너비 데이터는 열 경계가 글자수로 확정된다. 혼합 폭 문자를 포함하면 경계가 틀어진다. 사전 패딩을 적용한다.
=TEXT(A2,"@") ' 고정 너비 전에는 고정 폭 폰트에서 경계를 재확인한다. 또는 Power Query에서 “문자 수 기준 분할”을 사용하여 경계를 수치로 정의한다.
Microsoft 365에서는 동적 배열 함수를 이용해 마우스 조작 없이 분리한다. 재현성과 문서화에 유리하다.
=TEXTSPLIT(A2,",") =TEXTSPLIT(A2, {",",";","|"},,TRUE) ' 연속 구분 기호 하나로 처리 =TEXTBEFORE(A2,",") ' 첫 쉼표 앞 =TEXTAFTER(A2,",") ' 첫 쉼표 뒤 =SUBSTITUTE(TEXTSPLIT(A2,","),"""","") "고객명","주소","전화" "홍길동","Seoul, KR","010-1234-5678" 마법사 2단계 텍스트 한정자 " 지정한다. 3단계에서 전화·우편번호 열을 텍스트로 지정한다.
"Item";"Qty";"Price" "A";"10";"1,25" 마법사 3단계 “고급”에서 소수 구분 기호를 , 로, 천 단위 구분 기호를 . 또는 공백으로 지정한다. 또는 Price 열을 텍스트로 가져온 뒤 SUBSTITUTE로 변환한다.
=VALUE(SUBSTITUTE(B2,",",".")) 계좌번호는 텍스트, 거래일자는 텍스트로 먼저 로드하고 보고서 단계에서 날짜로 변환한다.
| 검증 항목 | 방법 | 합격 기준 |
|---|---|---|
| 열 개수 일관성 | =LEN(A2)-LEN(SUBSTITUTE(A2,",",""))+1로 대조 | 모든 행 동일 |
| 고유키 중복 | 조건부 서식 또는 COUNTIF | 중복 0건 |
| 형식 적합성 | 데이터 유효성 검사 | 숫자·날짜·텍스트 규칙 충족 |
| 합계 일치 | 원본 합계 vs 분리 후 합계 비교 | 차이 0 |
문제를 재현해야 원인을 고정할 수 있다. 다음 절차를 따른다.
Sub SplitCsvSafe() Dim ws As Worksheet, qt As QueryTable, p As String Set ws = ActiveSheet p = "C:\data\input.csv" For Each qt In ws.QueryTables qt.Delete Next qt With ws.QueryTables.Add(Connection:="TEXT;" & p, Destination:=ws.Range("A1")) .TextFilePlatform = 65001 ' UTF-8 .TextFileCommaDelimiter = True ' 콤마 구분 .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileDecimalSeparator = "." ' 소수점 .TextFileThousandsSeparator = "," ' 천단위 .TextFileColumnDataTypes = Array(2, 2, 2) ' 모두 텍스트 .AdjustColumnWidth = False .PreserveFormatting = True .Refresh BackgroundQuery:=False End With End Sub 설명한다. QueryTable을 이용하면 인코딩, 구분 기호, 텍스트 한정자, 열 형식을 고정할 수 있다. 자료형 2는 텍스트를 의미한다.
짝이 맞지 않는 따옴표는 정규식 또는 Power Query “열 병합→재분할”로 식별한다. 임시로 구분 기호를 드문 문자(|)로 대체 후 재분할한다.
필드마다 다른 구분 기호를 쓰는 경우 Power Query에서 “스플릿 기준: 구분 기호 목록”과 “열 고급 옵션”을 병용한다. 수식 기반 접근은 TEXTSPLIT에 배열 구분 기호를 제공한다.
=LET( t,A2, c,CLEAN(t), nb,SUBSTITUTE(c,CHAR(160)," "), TRIM(SUBSTITUTE(nb,CHAR(9)," ")) ) Power Query에서 구분 기호로 분할 후 열 수가 맞지 않는 행을 필터링하여 예외를 먼저 처리한다. 구분 기호가 필드 내부에도 등장한다면 원본 생성 단계에서 필드 감싸기를 적용하는 것이 근본 해결이다.
원본 열은 텍스트로 보존하고, 계산용 별도 열에서 VALUE로 숫자로 변환한다. 보고서는 TEXT로 서식을 입힌다.
데이터->텍스트/CSV에서 미리보기 인코딩을 UTF-8로 바꿔본다. 정상 표시되면 해당 인코딩으로 로드한다. 아니면 ANSI 계열로 순차 변경한다.
Power Query에서 분리 후 다시 CSV로 내보낸다. 텍스트 한정자와 구분 기호를 표준 쉼표로 지정한다.
반드시 텍스트 한정자 "로 감싸서 내보내야 한다. 가져오기 시에도 한정자를 인식해야 행이 깨지지 않는다.
메모장이나 코드 편집기에서 보이는 특수문자 표시 기능을 활용해 구분 기호, 따옴표 짝, 줄바꿈을 확인한다.