반응형
## 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
반응형
'VBA Macro > VBA Excel' 카테고리의 다른 글
[엑셀] 빈 행, 빈셀 삭제하기 매크로 (0) | 2017.11.14 |
---|---|
[엑셀] XML 파싱하기 #3 - (번외편) 공공데이터(API) 활용 (0) | 2017.11.11 |
[엑셀] 메모장 데이터 불러오기 매크로 (0) | 2017.11.07 |
[엑셀/파워포인트] 지식의 보고, VBA 도움말 및 가이드 (파일) (0) | 2017.10.27 |
[엑셀] 웹 페이지 크롤링/스크래퍼 매크로 (0) | 2017.10.21 |