엑셀 VBA에서 Join 함수는 배열(Array)의 요소들을 하나의 문자열로 결합하는 함수입니다.
즉, Split 함수의 반대 기능을 수행하며, 배열을 특정 구분자로 연결하여 문자열로 변환합니다.
1. 기본 문법
Join(배열, [구분자])
|
- 배열 → 문자열을 결합할 배열 (필수)
- 구분자 → 각 요소를 연결할 문자 (기본값: " " 공백)
📌 구분자를 지정하지 않으면 공백 " "으로 연결
📌 Split 함수와 반대로 작동
2. 배열을 쉼표(,)로 연결
Sub Join_쉼표()
Dim 데이터 As Variant
데이터 = Array("사과", "바나나", "포도", "딸기") ' 배열 선언
MsgBox Join(데이터, ", ")
End Sub
|
📌 출력: "사과, 바나나, 포도, 딸기"
📌 배열의 요소를 ", "(쉼표 + 공백)로 연결하여 하나의 문자열로 변환
3. 배열을 공백 없이 연결
Sub Join_공백없음()
Dim 데이터 As Variant
데이터 = Array("H", "E", "L", "L", "O")
MsgBox Join(데이터, "")
End Sub
|
📌 출력: "HELLO"
📌 구분자를 빈 문자열 ""로 설정하면 요소가 그대로 연결됨
4. 배열을 하이픈(-)으로 연결
Sub Join_하이픈()
Dim 데이터 As Variant
데이터 = Array("2025", "03", "08")
MsgBox Join(데이터, "-")
End Sub
|
📌 출력: "2025-03-08"
📌 배열을 "-"(하이픈)으로 연결하여 날짜 형식 변환
5. 셀 범위의 값을 배열로 변환 후 문자열로 결합
Sub 셀값_Join()
Dim 데이터 As Variant
데이터 = Application.Transpose(Range("A1:A5").Value) ' A1:A5 값을 배열로 변환
MsgBox Join(데이터, ", ")
End Sub
|
📌 A1:A5에 있는 데이터를 ", "로 연결하여 출력
6. 이메일 리스트를 ;로 연결
Sub Join_이메일()
Dim 이메일목록 As Variant
이메일목록 = Array("user1@gmail.com", "user2@gmail.com", "user3@gmail.com")
MsgBox Join(이메일목록, "; ")
End Sub
|
📌 출력: "user1@gmail.com; user2@gmail.com; user3@gmail.com"
📌 Outlook에서 다중 이메일 주소 입력할 때 유용
7. Split + Join 활용 (문자열 수정)
Sub Split_Join_변환()
Dim 데이터 As String
데이터 = "사과,바나나,포도,딸기"
데이터 = Join(Split(데이터, ","), " & ")
MsgBox 데이터
End Sub
|
📌 출력: "사과 & 바나나 & 포도 & 딸기"
📌 쉼표(,)로 구분된 문자열을 " & "로 변경하여 다시 결합
8. 문장을 단어별로 변경 후 다시 결합
Sub 문장_공백_변환()
Dim 문장 As String
문장 = "Hello World VBA Programming"
MsgBox Join(Split(문장, " "), "_")
End Sub
|
📌 출력: "Hello_World_VBA_Programming"
📌 공백(" ")을 언더스코어("_")로 변경
9. 배열에서 특정 단어 제외하고 결합
Sub 특정값_제외_Join()
Dim 데이터 As Variant, 필터링 As Variant
데이터 = Array("사과", "바나나", "포도", "딸기")
필터링 = Filter(데이터, "바나나", False) ' "바나나" 제외
MsgBox Join(필터링, ", ")
End Sub
|
📌 출력: "사과, 포도, 딸기"
📌 Filter를 활용하여 "바나나"를 제외하고 결합
10. 숫자 배열을 문자열로 변환
Sub 숫자배열_문자열변환()
Dim 숫자들 As Variant
숫자들 = Array(1, 2, 3, 4, 5)
MsgBox Join(숫자들, "-")
End Sub
|
📌 출력: "1-2-3-4-5"
📌 숫자를 문자열로 변환하여 "-"로 연결
11. 셀 범위 데이터를 CSV 형식으로 변환
Sub 범위_Join_CSV()
Dim 데이터 As Variant
데이터 = Application.Transpose(Range("A1:A10").Value)
Open "C:\Users\Public\데이터.csv" For Output As #1
Print #1, Join(데이터, ", ")
Close #1
MsgBox "CSV 파일 저장 완료!"
End Sub
|
📌 A1:A10의 데이터를 CSV 형식으로 저장 (,로 구분됨)
📌 파일 저장 후 "CSV 파일 저장 완료!" 메시지 출력
12. 각 줄을 vbNewLine으로 결합하여 다중 줄 문자열 생성
Sub 여러줄_Join()
Dim 데이터 As Variant
데이터 = Array("첫 번째 줄", "두 번째 줄", "세 번째 줄")
MsgBox Join(데이터, vbNewLine)
End Sub
|
📌 출력:
첫 번째 줄 두 번째 줄 세 번째 줄
📌 vbNewLine을 사용하여 줄바꿈 추가
📝 정리
기능
|
VBA 코드
|
배열을 쉼표(,)로 연결
|
Join(Array("A", "B", "C"), ", ")
|
공백 없이 연결
|
Join(Array("H", "E", "L", "L", "O"), "")
|
하이픈(-)으로 연결
|
Join(Array("2025", "03", "08"), "-")
|
셀 범위 값을 하나의 문자열로 변환
|
Join(Application.Transpose(Range("A1:A5").Value), ", ")
|
이메일 주소 연결
|
Join(Array("a@mail.com", "b@mail.com"), "; ")
|
문자열 변경 (Split + Join)
|
Join(Split("A,B,C", ","), " & ")
|
특정 단어 제외 후 결합
|
Join(Filter(Array("A", "B", "C"), "B", False), ", ")
|
숫자 배열을 문자열로 변환
|
Join(Array(1, 2, 3), "-")
|
CSV 파일 저장
|
Print #1, Join(Application.Transpose(Range("A1:A10").Value), ", ")
|
줄 단위 결합
|
Join(Array("Line1", "Line2"), vbNewLine)
|
🔥 VBA의 Join 함수는 배열을 하나의 문자열로 변환하는 데 강력한 기능을 제공합니다! 🚀