엑셀 VBA에서 TextToColumns 메서드는 하나의 셀에 있는 데이터를 특정 구분자를 기준으로 여러 개의 열로 나눌 때 사용됩니다.
즉, 쉼표(,), 공백, 탭, 특정 문자 등을 기준으로 데이터를 나누는 기능입니다.
1. 기본 문법
Range("분할할 범위").TextToColumns Destination:=Range("시작할 셀"), DataType:=xlDelimited 또는 xlFixedWidth, OtherChar:="구분자"
|
- Destination → 데이터를 분할하여 넣을 첫 번째 셀 (기본적으로 원본 위치에 분할)
- DataType
- xlDelimited → 쉼표, 공백 등 특정 문자 기준으로 분할 (가장 많이 사용됨)
- xlFixedWidth → 고정된 문자 개수 단위로 분할
- TextQualifier
- xlTextQualifierNone → 텍스트 구분자 없음
- xlTextQualifierDoubleQuote → "텍스트" 형식으로 묶인 데이터 유지
- OtherChar → 사용자가 직접 지정한 구분자 (예: |)
2. 쉼표(,)로 데이터 나누기
Sub 쉼표로_나누기()
Range("A1:A10").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, Comma:=True
End Sub
|
📌 A1:A10 범위의 데이터를 쉼표 , 기준으로 나누기
📌 결과: "사과,바나나,포도" → A1: "사과", B1: "바나나", C1: "포도"
3. 공백으로 데이터 나누기
Sub 공백으로_나누기()
Range("A1:A10").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, Space:=True
End Sub
|
📌 공백(스페이스) 기준으로 데이터 분할
📌 결과: "홍길동 서울 30" → A1: "홍길동", B1: "서울", C1: "30"
4. 탭(Tab)으로 데이터 나누기
Sub 탭으로_나누기()
Range("A1:A10").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, Tab:=True
End Sub
|
📌 탭(Tab) 기준으로 데이터 분할
📌 주로 복사된 텍스트 파일이나 CSV 파일에서 사용
5. 사용자 정의 문자(|)로 나누기
Sub 특정문자_나누기()
Range("A1:A10").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, Other:=True, OtherChar:="|"
End Sub
|
📌 |(파이프) 기호를 기준으로 데이터 분할
📌 결과: "사과|바나나|포도" → A1: "사과", B1: "바나나", C1: "포도"
6. 고정된 길이(Fixed Width)로 데이터 나누기
Sub 고정길이_나누기()
Range("A1:A10").TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, FieldInfo:=Array(Array(5, 1), Array(10, 1))
End Sub
|
📌 문자 개수를 기준으로 데이터를 분할
📌 예제:
- "12345ABCDE67890" → A1: "12345", B1: "ABCDE", C1: "67890"
- FieldInfo:=Array(Array(5,1), Array(10,1)) → 5번째, 10번째 위치에서 분할
7. 분할 후 데이터 형식 지정
📌 분할 후 숫자로 변환
Sub 데이터형식_변환()
Range("A1:A10").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, Comma:=True, FieldInfo:=Array(Array(1, 1), Array(2, 1))
End Sub
|
📌 FieldInfo:=Array(Array(1, 1), Array(2, 1))
- 첫 번째 열 → 일반 텍스트 (1 = xlGeneralFormat)
- 두 번째 열 → 숫자 (1 = xlGeneralFormat)
8. CSV 파일 자동 정리
Sub CSV_정리()
Dim ws As Worksheet
Set ws = ActiveSheet
ws.Range("A1:A1000").TextToColumns Destination:=ws.Range("A1"), DataType:=xlDelimited, Comma:=True
End Sub
|
📌 CSV 데이터를 불러온 후 쉼표 , 기준으로 자동 정리
9. 대량 데이터 자동 분할
Sub 대량_데이터_자동분할()
Dim rng As Range
Dim cell As Range
Set rng = Range("A1:A1000")
For Each cell In rng
If cell.Value <> "" Then
cell.TextToColumns Destination:=cell, DataType:=xlDelimited, Comma:=True
End If
Next cell
End Sub
|
📌 A1:A1000 범위의 데이터를 개별적으로 쉼표 , 기준으로 자동 분할
📝 정리
기능
|
VBA 코드
|
쉼표로 데이터 나누기
|
Comma:=True
|
공백으로 데이터 나누기
|
Space:=True
|
탭(Tab)으로 데이터 나누기
|
Tab:=True
|
**특정 문자(`
|
`)로 데이터 나누기**
|
고정된 길이로 나누기
|
DataType:=xlFixedWidth, FieldInfo:=Array(Array(5,1), Array(10,1))
|
CSV 데이터 정리
|
Range.TextToColumns Destination:=Range, DataType:=xlDelimited, Comma:=True
|
🔥 VBA의 TextToColumns를 활용하면 데이터 정리를 자동화할 수 있습니다! 🚀