VBA Macro/VBA Excel

[엑셀] XML 파싱하기 #2 - 필요한 데이터만 잘라내기 (split 함수)

루아흐뉴마 2017. 11. 11. 16:36
반응형
## XML 형식으로 이루어진 텍스트에서 필요한 데이터만 잘라내기 위해 VBA Split 함수를 사용한다.
Split 함수는 특정 문자열에서 "구분자"를 통해 나눠지는 각 문자열을 "배열로" 반환한다.
Split 함수를 엑셀의 SUM 함수처럼 자유자재로 쓴다면(그정도로 써야한다) 문자열을 처리하는 데 있어서 활용성이 매우 높은 함수이다. 

## Split 함수 구문
    Split 함수의 구문은 다음과 같다. Split(Expression,  [Delimiter], [Limit], [Compare])
    Expression은 텍스트로써, 필수요소이다. Delimiter는 구분자로써, 선택요소이다. 생략하면 공백(" ")이 기본값이다.
    Limit은 반환할 문자열 길이이다. 생략하면 기본값은 -1로 전체 문자열을 반환한다. (생략하면 됨)
    Compare는 문자열 비교 방식이다. 생략하면 기본값은 Binary Compare를 수행한다. (생략하면 됨)

## Split 함수 사용
    Split 함수는 Delimiter로 구분되는 모든 값들을 배열로 반환한다.
    다음과 같은 문자열이 있다고 하자. myString = "동해물과_백두산이_마르고_닳도록"
    여기에 언더바 "_"를 Delimiter로 지정하여 Split 함수를 사용하면, Split(myString, "_") 와 같이 쓸 수 있다.
    그 결과값은 {"동해물과", "백두산이", "마르고", "닳도록"} 이다. 즉, 배열을 반환한다. (하나의 값이 아니다.)
    스플릿 함수의 결과값 자체가 배열이기 때문에 일반적으로 각 배열에 접근하는 방식을 적용하여 특정 값만 취할 수 있다.
    예컨대, Split(myString, "_")(0)과 같이 사용하면 그 결과값은 "동해물과"를 반환한다. (1)을 하면 당연히 "백두산이"를 반환한다.

    Split 함수는 이처럼 구분자를 통해 문자열을 걸러낼 수 있다는 점 때문에
    XML과 같은 태그가 붙은 텍스트를 효과적으로 뽑아낼 수 있다.

## Split 함수 활용 (XML 파싱)
    1. 아래 그림과 같이 XML 전체가 하나의 TEXT로 있다고 하자. (고용부 직업훈련포털의 훈련과정 정보 API 중 일부)
    2. 여기서 필요한 데이터가 "지역" 즉, <address> </address>로 묶여 있는 "서울 노원구" 부분이라고 하자.
    3. 가장 먼저 해야 할 것은 "서울 노원구" 앞에 있는 <address>까지 필요 없는 부분을 잘라내는 것이다.
    4. 이를 Split 함수로 표현하면 Split(TEXT, "<address>")(1) 이 된다.
    5. 즉, Split 함수에서 구분자로 <address>를 적용하여 <address> 태그의 앞 부분과 뒷 부분 중에서 뒷 부분, 즉 배열 번호 (1)을 통해 선택하는 것이다. (그림 참조)







VBA Code
123


반응형