[엑셀 VBA #14] 문자 나누고 합치기 (split, join)
엑셀 VBA 강의 2015. 11. 27. 19:22 |이전 포스팅 바로가기
[엑셀 VBA #14] 문자 나누고 합치기 (split, join)
이번 포스팅에서는 문자를 나누는 split문과 문자를 합치는 join문에 대해 알아보겠습니다.
예제를 받고 따라와주세요.
SPLIT
split문은 일반적으로 텍스트 파일을 엑셀로 불러올 때 많이 쓰이는 문법입니다.
엑셀 VBA 실전예제 카테고리 중 "텍스트 파일 엑셀에 입력하기" 포스팅에서 다뤘었습니다.
예를 들어, 텍스트 문서의 내용이 아래와 같습니다.
김정기 윤주환 정문석 고정우 김진기 정윤환
이 경우 위 텍스트 내용을 엑셀에 붙혀넣으면, 아래와 같이 출력됩니다.
하지만 각 셀에 이름이 하나씩 들어가게 하려면, 이름 문자열을 분리해야 합니다.
이럴 때 사용하는 문법이 split 문입니다.
하지만 split 문을 사용할 때에는 한 가지 조건이 붙습니다.
문자가 나눠지는 부분이 일정한 구분자(공백(space bar), 콤마(,), 슬래시(/)) 등으로 나눠져 있어야 합니다.
Sub example_9()
Dim varName() As String '배열 varName 선언, 형식 에러가 날 경우 As Variant로 변경
Dim i As Long
i = UBound(Split(Cells(3, 1), " ")) - LBound(Split(Cells(3, 1), " ")) + 1 '문자의 개수 확인
ReDim varName(1 To i) '문자의 개수만큼 배열 크기 설정
varName = Split(Cells(3, 1), " ") '공백을 기준으로 문자열 나눔 "vbTab" "," ";" 등 여러가지 사용 가능
Selection.Resize(, i).Value = varName '선택한 셀을 기준으로 문자 삽입
End Sub
아래와 같이 출력됩니다. (A4셀 선택 후 실행)
JOIN
JOIN문은 배열 형식으로 저장된 값을 하나로 뭉쳐서 출력해줍니다.
SPLIT과 반대되는 개념고, 엑셀의 concatenate 함수와 비슷합니다.
Sub example_9_2()
Dim varName() As String
Dim i As Long
i = UBound(Split(Cells(3, 1), " ")) - LBound(Split(Cells(3, 1), " ")) + 1
ReDim varName(1 To i)
varName = Split(Cells(3, 1), " ")
Cells(8, 1).Value = Join(varName, "/")
End Sub
위의 코드는 SPLIT 예제에서 출력되는 부분을 빼고, 주황색 부분만 더한 코드입니다.
JOIN문을 사용할때도 구분자의 설정이 필요합니다.
SPLIT과 반대로 값 사이사이에 구분자를 넣어서 출력해줍니다.
아래와 같이 출력됩니다.
마찬가지로 구분자를 바꾸면 다른 형식으로 값을 출력할 수 있습니다.
'엑셀 VBA 강의' 카테고리의 다른 글
[엑셀 VBA #16] (배열#3) 배열 내림차순/오름차순 정렬하기(버블 정렬) (0) | 2015.12.03 |
---|---|
[엑셀 VBA #15] 셀에 특정 값이 입력될때 실행되는 메크로 (2) | 2015.12.01 |
[엑셀 VBA #13] (배열#2) 배열의 크기 확인 Ubound, Lbound (0) | 2015.11.26 |
[엑셀 VBA #12] (배열응용) 특정 셀 영역 그대로 복사/이동하기 (2) | 2015.11.24 |
[엑셀 VBA #11] (배열#1) 배열 이해하기. 배열의 차원과 정적, 동적배열 (0) | 2015.11.24 |