- 공유 링크 만들기
- X
- 이메일
- 기타 앱
이 글의 목적은 엑셀의 “텍스트를 열로 나누기” 기능 사용 시 발생하는 다양한 오류 원인을 체계적으로 진단하고, 데이터 손실 없이 정확히 분리·정제하는 실무 중심 해결책을 제공하는 것이다.
1. 증상 분류와 빠른 자가진단 체크리스트
“텍스트를 열로 나누기(데이터 → 데이터 도구 → 텍스트 나누기)” 실행 시 아래와 같은 현상이 보고된다.
- 구분 기호로 나눴는데 한 열로 합쳐지거나 열 개수가 맞지 않다.
- 숫자가 날짜로 바뀌거나 선행 0이 사라진다.
- 한글이 깨지거나 물음표로 표시된다.
- 셀이 병합되어 도중에 실패한다.
- 부분적으로만 적용되고 나머지는 그대로 남는다.
- 마침표·쉼표가 소수점/천단위로 해석되어 숫자 형식이 엉킨다.
| 증상 | 가능 원인 | 즉시 조치 |
|---|---|---|
| 열이 하나로 합쳐짐 | 구분 기호 불일치, 텍스트 한정자(") 혼재, 파일 인코딩 문제 | 정확한 구분 기호 재지정, 고급 옵션에서 텍스트 한정자 확인, 인코딩 재불러오기 |
| 선행 0 소실 | 열 서식 자동 감지로 숫자 변환 | 단계 3에서 데이터 서식을 “텍스트”로 지정 |
| 날짜로 자동 변환 | 숫자+구분자가 날짜 패턴과 일치 | 해당 열 서식을 “텍스트”로 지정 또는 사용자 지정 |
| 한글 깨짐 | CSV/텍스트 인코딩 미일치 | 가져오기 마법사에서 UTF-8/ANSI 선택 또는 재인코딩 |
| 중도 실패 | 병합 셀, 보호 시트, 테이블 모드 제약 | 병합 해제, 보호 해제, 범위로 변환 후 재시도 |
| 숫자 형식 혼선 | 지역 소수점/천단위 기호 차이 | 고급 옵션에서 구분자 맞춤 또는 임시 지역설정 변경 |
2. 원리 이해: 마법사 3단계가 만드는 차이
“텍스트를 열로 나누기” 마법사는 단계별로 다음을 수행한다.
- 형식 선택 — 구분 기호로 분리 또는 고정 너비 를 선택한다.
- 구분 기호 지정 — 쉼표, 탭, 세미콜론, 공백, 기타를 조합하고 텍스트 한정자(보통 “)를 지정한다.
- 대상 열별 데이터 서식 — 일반, 텍스트, 날짜(연-월-일 등), 고급 숫자 옵션을 선택한다.
3. 실무형 해결 절차: 시나리오별 가이드
3.1 쉼표(CSV)인데 열이 하나로만 나뉘는 경우
-
원본을 확인하여
","사이에 줄바꿈이나 추가 따옴표가 있는지 점검한다. - 데이터 → 텍스트 나누기 → 구분 기호로 분리 → 쉼표 선택 후 텍스트 한정자를 큰따옴표 로 지정한다.
- 미리보기에서 열 경계가 정확한지 확인 후 3단계에서 텍스트 로 필요한 열 서식을 고정한다.
3.2 탭/세미콜론 혼재 데이터
- 2단계에서 탭 과 세미콜론 을 동시에 체크한다.
- 연속 구분 기호로 간주 옵션을 활성화하여 공백 다중 분리를 방지한다.
-
필요 시
기타
에 파이프(
|) 등 맞춤 기호를 추가한다.
3.3 한글 깨짐(물음표, � 표시)
- Windows : 데이터 → 텍스트/CSV에서 → 파일 원본 을 65001: UTF-8 또는 949: 한국어(ANSI) 로 바꿔 미리보기 확인한다.
- Mac : 데이터 가져오기에서 인코딩을 UTF-8 로 강제하고 미리보기로 확인한다.
- 엑셀 내 텍스트 나누기를 써야 한다면, 먼저 올바른 인코딩으로 워크시트에 로드한 뒤 분할을 수행한다.
3.4 날짜로 잘못 바뀌는 제품코드/시리얼
- 3단계에서 해당 열을 반드시 텍스트 로 지정한다.
-
이미 변환된 경우
TEXT(원본셀,"0")또는 접두사'를 사용해 복원한다. - 대량 처리 시 파워쿼리로 형식 변경 금지 상태로 로드한다.
3.5 선행 0이 사라짐
- 분할 전 대상 열의 열 서식을 텍스트 로 바꾸고 실행한다.
-
또는 분할 후
TEXT(셀,"000000")같은 사용자 지정 포맷을 적용한다.
3.6 병합 셀·테이블 상태에서 실패
- 홈 → 병합하고 가운데 맞춤 해제로 모든 병합을 푼다.
- 테이블인 경우 테이블 디자인 → 범위로 변환 후 진행한다.
- 시트 보호가 걸려 있으면 해제한다.
3.7 소수점·천단위 기호가 다른 데이터
예: 원본이 유럽 형식
1.234,56
인데 한국 로캘은
1,234.56
인 경우이다.
- 마법사 3단계의 고급 에서 소수 구분 기호와 천 단위 구분 기호를 원본 형식에 맞춘다.
- 또는 파일 → 옵션 → 고급 에서 시스템 구분 기호 사용 을 해제하고 임시로 교체한다.
4. 인코딩·구분자·한정자 설계 베스트 프랙티스
- 인코딩 : 가능하면 UTF-8로 통일한다.
- 구분자 : 데이터 값에 등장하지 않는 문자를 고른다. 콤마가 값 안에 많으면 탭이나 파이프를 고려한다.
- 텍스트 한정자 : 값에 구분자가 포함될 수 있으면 필드 전체를 큰따옴표로 감싼다.
-
줄바꿈
: 셀 내부 줄바꿈은
"텍스트 안\n"처럼 한정자 안에서만 허용한다.
| 항목 | 권장 | 비고 |
|---|---|---|
| 인코딩 | UTF-8 | 다국어 호환성 우수 |
| 구분자 | 탭 또는 파이프 | 데이터 내 콤마 충돌 방지 |
| 텍스트 한정자 | " | 필수 문자가 값에 포함될 때 사용 |
| 소수·천단위 | 로캘 일치 | 고급 설정으로 일시 지정 |
5. 대량·반복 작업은 파워쿼리로 전환
파워쿼리는 동일 규칙 재사용, 오류 행 분기, 형식 고정 로드가 강점이다.
- 데이터 → 데이터 가져오기 → 텍스트/CSV → 파일 선택 후 변환 데이터 를 누른다.
- 구분자, 행 머리글, 데이터 형식 감지 안 함 또는 형식 변경 단계 삭제 로 자동 변환을 막는다.
- 필요 시 분할 열 (구분 기호 기준)로 세분화한다.
- 오류 행은 오류 유지/제거 로 관리하고, 닫기 및 로드 로 결과를 시트에 반영한다.
6. 안전한 사전 정제: 함수를 이용한 방어
마법사 실행 전/후 다음 함수를 활용하면 데이터 왜곡을 예방한다.
-
SUBSTITUTE(텍스트, ",", "│")로 내부 콤마를 임시 치환한다. -
TRIM,CLEAN으로 공백과 제어문자를 제거한다. -
TEXT(값,"000000")으로 출력 폭을 고정한다.
=LET( _raw, A2:A1000, _t1, MAP(_raw, LAMBDA(x, CLEAN(TRIM(x)))), _t2, MAP(_t1, LAMBDA(x, SUBSTITUTE(x, ",", "│"))), _t2)
7. VBA로 한 번에 처리하는 자동화 스크립트
대량 파일을 동일 규칙으로 분리해야 할 때 아래 매크로를 사용한다.
Option Explicit Sub SplitTextColumns() Dim rng As Range, lastCol As Long Set rng = Selection If rng Is Nothing Then Exit Sub
With rng
.TextToColumns _
Destination:=.Cells(1,
1), _
DataType:=xlDelimited, _
TextQualifier:=xlTextQualifierDoubleQuote, _
ConsecutiveDelimiter:=False, _
Tab:=False, Semicolon:=False, Comma:=True, Space:=False, Other:=False
End With
' 열 서식 강제 텍스트 지정 예: 첫 3열
Dim i As Long
For i = 1 To 3
rng.Offset(0, i -
1).EntireColumn.NumberFormat = "@"
Next i
End Sub
8. CSV 인코딩 변환 후 가져오기
공유 시스템에서 ANSI로 저장된 CSV가 많다면 UTF-8로 변환 후 가져오기를 권장한다.
:: Windows 명령 프롬프트에서 powershell -NoP -C "Get-Content 'input.csv' | Set-Content -Encoding UTF8 'output.csv'"
변환된 파일을 데이터 가져오기에서 UTF-8 로 로드한 뒤 텍스트 나누기를 진행한다.
9. 빈 셀, 가변 열 수, 불완전 행 처리 전략
- 빈 열 유지 : 파워쿼리에서 null 유지 후 후처리한다.
- 열 수 가변 : 가장 많은 열 구조로 스키마를 고정하고 부족한 행은 빈 값으로 채운다.
- 불완전 행 : 오류 행 필터로 분리하여 원본에 수정 요청을 회신한다.
10. Windows와 Mac 인터페이스 차이
| 항목 | Windows | Mac |
|---|---|---|
| 메뉴 경로 | 데이터 → 텍스트 나누기 | 데이터 → 텍스트 나누기 |
| 텍스트/CSV 가져오기 | 파일 원본 인코딩 상세 선택 가능 | 파일 원본 인코딩 간소화 |
| 고급 숫자 옵션 | 소수·천단위 구분자 별도 지정 | 지역설정에 통합되어 표시 |
11. 지역설정과 숫자 인식 충돌 해결
- 파일 → 옵션 → 고급 에서 시스템 구분 기호 사용 체크를 해제한다.
- 소수 구분 기호, 천 단위 기호를 원본과 일치시키고 작업한다.
- 작업 종료 후 원래 설정으로 복구한다.
12. 오류 재발 방지를 위한 데이터 계약(데이터 공급자와 합의)
- 인코딩은 UTF-8로 고정한다.
- 구분자는 탭 또는 파이프로 합의한다.
- 필수 열 목록, 열 순서, 열 수를 명시한다.
- 텍스트 필드는 큰따옴표로 감싼다.
- 날짜·숫자 형식 예제를 제공한다.
13. 문제 해결 플레이북 요약
- 원본 미리보기로 인코딩과 구분자·한정자를 확인한다.
- 마법사 3단계에서 텍스트 서식을 강제한다.
- 병합·보호·테이블 상태를 해제한다.
- 로캘 구분 기호를 임시 조정한다.
- 반복 작업은 파워쿼리로 규칙화한다.
- 재발 방지를 위해 데이터 계약을 문서화한다.
FAQ
분할 후 일부 열이 비거나 밀리는 이유는 무엇인가?
값 내부의 구분 기호가 텍스트 한정자 없이 등장하면 분할 수가 불안정해진다. 데이터 공급 단계에서 텍스트 필드를 큰따옴표로 감싸도록 요구하고, 임시로는 치환 후 분할하는 절차를 적용한다.
선행 0을 유지하면서 숫자 계산도 하고 싶다. 방법이 있나?
보이는 값은 텍스트로 유지하며 계산용 별도 열을 둔다. 텍스트를 숫자로 변환한 헬퍼 열을 만들고 계산은 해당 열로 수행한다.
날짜 자동 변환을 완전히 막을 수 있나?
마법사 3단계에서 텍스트로 지정하거나 파워쿼리에서 형식 변경 단계를 삭제하면 된다. 불가피할 때는 접두사 따옴표를 사용한다.
행 수가 많아 멈추는 것 같다. 어떻게 안정화하나?
파워쿼리로 전환하고 단계별 미리보기 캐시를 최소화한다. 필요 시 파일을 분할 처리한다.
값 안의 줄바꿈 때문에 분할이 꼬인다. 대처 방법은?
텍스트 한정자를 필수로 적용하고, 내부 줄바꿈은 한정자 안에서만 허용한다. 기존 파일은 한정자 추가 후 재저장한다.