Range 개체

TextToColumns 메서드

노만e 2025. 3. 10. 19:36

엑셀 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를 활용하면 데이터 정리를 자동화할 수 있습니다! 🚀