엑셀 VBA에서 Split 함수는 문자열을 특정 구분자를 기준으로 나누어 배열(Array)로 변환하는 함수입니다.
즉, 쉼표(,), 공백, 하이픈(-) 등의 구분자로 문자열을 분리할 때 사용됩니다.
1. 기본 문법
Split(문자열, [구분자], [제한], [비교모드])
|
- 문자열 → 분할할 문자열 (필수)
- 구분자 → 문자열을 나눌 기준 문자 (기본값: 공백 " ")
- 제한 → 최대 몇 개까지 나눌지 지정 (기본값: -1, 즉 전체 분할)
- 비교모드 → 대소문자 구분 여부 (vbBinaryCompare 또는 vbTextCompare)
📌 Split 함수는 배열(Array)을 반환
📌 배열 요소에 접근하려면 LBound, UBound 또는 For Each 루프 사용
2. 기본 예제 (쉼표 , 로 문자열 분할)
Sub Split_기본사용()
Dim 결과 As Variant
결과 = Split("사과,바나나,포도,딸기", ",") ' 쉼표(,) 기준으로 분할
MsgBox 결과(0) & vbNewLine & 결과(1) & vbNewLine & 결과(2) & vbNewLine & 결과(3)
End Sub
|
📌 출력:
사과 바나나 포도 딸기
📌 문자열을 ,(쉼표) 기준으로 나누어 배열에 저장 후 출력
3. 공백을 기준으로 문자열 분할
Sub Split_공백_사용()
Dim 결과 As Variant
결과 = Split("Hello World VBA", " ") ' 공백 기준으로 분할
MsgBox 결과(0) & vbNewLine & 결과(1) & vbNewLine & 결과(2)
End Sub
|
📌 출력:
Hello
World
VBA
|
📌 공백을 기준으로 Hello, World, VBA로 나누어 배열에 저장
4. 하이픈(-)을 기준으로 분할
Sub Split_하이픈()
Dim 결과 As Variant
결과 = Split("2025-03-08", "-") ' "-" 기준으로 분할
MsgBox "연도: " & 결과(0) & vbNewLine & "월: " & 결과(1) & vbNewLine & "일: " & 결과(2)
End Sub
|
📌 출력:
연도: 2025
월: 03
일: 08
|
📌 하이픈(-)을 기준으로 날짜를 연도, 월, 일로 분리
5. 최대 분할 개수 지정 (제한 인수)
Sub Split_최대분할()
Dim 결과 As Variant
결과 = Split("하나,둘,셋,넷,다섯", ",", 3) ' 최대 3개로 나눔
MsgBox 결과(0) & vbNewLine & 결과(1) & vbNewLine & 결과(2)
End Sub
|
📌 출력:
하나 둘 셋,넷,다섯
📌 세 번째 요소부터는 남은 문자열 전체가 포함됨
6. 대소문자 구분 없이 분할 (비교모드 인수)
Sub Split_대소문자무시()
Dim 결과 As Variant
결과 = Split("apple,Banana,APPLE,banana", ",", -1, vbTextCompare)
MsgBox 결과(0) & vbNewLine & 결과(1) & vbNewLine & 결과(2) & vbNewLine & 결과(3)
End Sub
|
📌 대소문자를 무시하고 분할
7. 배열 요소를 루프(For Each)로 출력
Sub Split_루프_출력()
Dim 결과 As Variant
Dim 요소 As Variant
결과 = Split("사과,바나나,포도,딸기", ",") ' 쉼표로 분할
For Each 요소 In 결과
Debug.Print 요소
Next 요소
End Sub
|
📌 Immediate 창에 사과, 바나나, 포도, 딸기 출력
8. 배열을 워크시트에 출력
Sub Split_워크시트_출력()
Dim 결과 As Variant
Dim i As Integer
결과 = Split("국어,영어,수학,과학", ",") ' 쉼표로 분할
For i = LBound(결과) To UBound(결과)
Cells(i + 1, 1).Value = 결과(i) ' A열에 값 입력
Next i
End Sub
|
📌 A1:A4에 "국어", "영어", "수학", "과학" 입력
9. 이메일 주소에서 사용자명 추출
Sub Split_이메일_사용자()
Dim 결과 As Variant
결과 = Split("example@gmail.com", "@") ' "@" 기준으로 분할
MsgBox "사용자명: " & 결과(0) & vbNewLine & "도메인: " & 결과(1)
End Sub
|
📌 출력:
사용자명: example
도메인: gmail.com
|
📌 이메일 주소에서 사용자명과 도메인을 분리
10. 여러 개의 구분자로 문자열 분할 (Replace + Split 활용)
Split 함수는 한 가지 구분자만 사용할 수 있지만, Replace 함수를 활용하면 여러 구분자로 분할 가능
📌 출력:
사과 바나나 포도 딸기
📌 ;와 /도 쉼표 ,처럼 동작하도록 변환 후 Split 수행
11. 각 줄을 개별 요소로 분할 (vbNewLine 사용)
📌 출력:
첫 번째 줄 두 번째 줄 세 번째 줄
📌 각 줄을 vbNewLine 기준으로 나누어 배열로 저장
📝 정리
기능
|
VBA 코드
|
쉼표(,) 기준 분할
|
Split("사과,바나나,포도", ",")
|
공백 기준 분할
|
Split("Hello World VBA", " ")
|
하이픈(-) 기준 분할
|
Split("2025-03-08", "-")
|
최대 분할 개수 지정
|
Split("하나,둘,셋,넷", ",", 3)
|
배열 출력 (For Each)
|
For Each 요소 In 결과 : Debug.Print 요소 : Next 요소
|
배열을 워크시트에 출력
|
Cells(i + 1, 1).Value = 결과(i)
|
이메일 주소에서 사용자명 추출
|
Split("example@gmail.com", "@")
|
여러 구분자로 분할
|
Split(Replace("A;B,C", ";", ","), ",")
|
줄 단위 분할
|
Split("첫 줄" & vbNewLine & "둘째 줄", vbNewLine)
|
🔥 VBA의 Split 함수는 문자열을 배열로 변환하는 강력한 도구입니다! 🚀