세진세상

VBA 문자열 함수 #4(Split, Join) 본문

VBA

VBA 문자열 함수 #4(Split, Join)

세진세상 2018. 2. 27. 22:14

VBA 문자열 함수 #4


VBA의 문자열 함수 중에서 '배열'과 관련된 함수를 알아보겠다.

특정 문자나 기호로 구분할 수 있는 문자열을 배열에 나눠 넣거나,

반대로 배열에 입력되어 있는 각각의 문자를 하나의 문자열로 연결하는 것이다.



SPLIT(문자열, 구분자)

입력된 문자열을 지정한 구분자로 자르고, 배열의 각 주소에 나눠서 등록한다.

구분자을 따로 지정하지 않으면, 공백으로 구분하여 문자열을 자르게 된다.


바로 실습에 들어가겠다.

무한도전 토토가3로 다시 뭉쳤던 H.O.T의 노래 "We are the Future"를 문자열로 사용하고,

각 단어를 배열에 나눠 입력하자.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub Split_ex()
    Dim str As String
    Dim arr1() As String
    Dim arr2() As String
    Dim i As Long
    
    str = "We are the Future!"
    arr1() = Split(str)
    arr2() = Split(str, "e")
    
    Debug.Print "Array1"
    For i = 0 To UBound(arr1)
        Debug.Print "arr1("; i; ") : "; arr1(i)
    Next i
    Debug.Print "Array2"
    For i = 0 To UBound(arr2)
        Debug.Print "arr2("; i; ") : "; arr2(i)
    Next i
    
End Sub
cs


배열 arr1 에는 구분자를 지정하지 않았고, 배열 arr2 에는 e 를 구분자로 지정하였다.


결과를 보면 각 배열에 의도한 데이터가 입력된 것을 확인할 수 있다.

당연한 이야기지만, e 를 구분자로 사용한 경우 공백도 문자의 일부가 된다.



JOIN(배열, 구분자)

배열의 각 주소에 입력된 데이터를 지정한 구분자를 넣어 하나의 문자열로 연결한다.

구분자를 따로 지정하지 않으면, 공백을 넣어 연결하게 된다.


마찬가지로 바로 실습에 들어가겠다. 문구 또한 위 아더 퓨쳐다.

배열에 각 단어를 넣고 이를 연결해보자. 이 예시도 구분자 지정 여부를 나눠서 확인하겠다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub Join_ex()
    Dim arr() As String
    Dim str1 As String
    Dim str2 As String
        
    ReDim arr(3)
 
    arr(0= "We"
    arr(1= "are"
    arr(2= "the"
    arr(3= "Future"
    
    str1 = Join(arr)
    str2 = Join(arr, "#")
    
    Debug.Print "Str1 : "; str1
    Debug.Print "Str2 : "; str2
    
End Sub
cs


동적배열을 선언할 때에는 유의할 점이 있다.

위 SPLIT의 예시와는 달리 ReDim 을 통해 배열의 크기를 지정하였다.

이는 각 주소에 데이터를 바로 넣을 경우, 그전에 반드시 수행해야 한다.

그렇지 않으면 '아래 첨자 사용이 잘못되었습니다.' 라고 하는 9번 런타임 오류가 발생한다.


위와 같이 구분자를 지정하지 않아도 자동으로 단어 사이에 공백을 입력해준다.

구분자를 지정한다면 해당 문자나 기호를 넣어 단어를 연결하게 된다.



지금까지 문자열과 배열을 서로 활용하는 함수를 학습하였다.

그 동안 문자열 함수를 꽤 다양하게 다뤄보았는데, 문자열에 활용할 수 있는 함수는 이보다 훨씬 많다.

전부 다뤄볼 수 없으니 이 정도로 마치고자 한다.

다음부터는 날짜함수에 대해 익혀보겠다.


Comments