본문 바로가기

엑셀

[엑셀VBA] Join, 문자열 합치기

반응형

안녕하십니까 춤추는초코칩입니다.

업무 중에 필요한 엑셀VBA를 기록하고 있습니다.

지난 시간에 "Split, 문자열 나누기"를 했습니다.

오늘은 "문자열 합치기" 혹은 "텍스트 합치기" 기능입니다.

엑셀 VBA의 Join 함수는 배열의 항목을 결합하여 하나의 문자로 반환합니다.

함수의 구문

Join ( SourceArray, [Delimiter] )

 

함수의 인수

SourceArray 필수 결합하려는 문자열
Delimiter 선택

각 문자열을 구분하는데 사용되는 구분 기호로,

생략하면 공백(" ")으로 설정

'예제1. 문자열 합치기, 구분자 기본설정(" ")

Sub TextJoin()
    ' Join together the strings "John", "Paul" and "Smith".
    Dim fullName As String
    Dim names(0 To 2) As String
    
    names(0) = "John"
    names(1) = "Paul"
    names(2) = "Smith"

    fullName = Join(names)
    ' The variable fullName is now set to "John Paul Smith"
    
    Cells(1, 1) = fullName

End Sub

'예제2. 문자열 합치기, 구분자 "\"

Sub TextJoin2()
    ' Join together the strings "C:", "My Documents" and "DataFiles".
    Dim fullPath As String
    Dim dirs(0 To 2) As String
    
    dirs(0) = "C:"
    dirs(1) = "My Documents"
    dirs(2) = "DataFiles"
    
    fullPath = Join(dirs, "\")
    ' The variable fullPath is now set to "C:\My Documents\DataFiles"
    
    Cells(2, 1) = fullPath
    
End Sub

 

마지막으로 Join과 Split 함수를 활용하면, 2개의 문자 혹은 문자열을 하나의 문자열로 만들 수 있습니다.

'예제3. 두개 문자, 문자열을 하나의 문자열로 만들기

Sub TextJoin3()


    Dim names() As String
    Dim dirs() As String
    Dim fullName As String
    Dim fullPath As String
    Dim Emp() As String

    'Step1. 2개 배열로 불러오기
    names = Split(Cells(1, 1))
    dirs = Split(Cells(2, 1), "\")
    
    'Step2. 문자열 합치기,구분자(,)
    fullName = Join(names, ",")
    fullPath = Join(dirs, ",")
    
    'Step3. 2개 문자를 하나의 임시 배열로 만들기
    Emp = Array(fullName, fullPath)
    
    'Step4. 문자열 합치기, 구분자(,) 후 문자열 나누기
    Full = Split(Join(Emp, ","), ",")
    
    'Step5. 문자열 출력하기
    For i = 0 To UBound(Full)
        Cells(i + 4, 1) = Full(i)
    Next i

End Sub

참고자료

 

[엑셀VBA] Split, 문자열 나누기

반응형