우편번호 주소 정리
전국 우편번호 자료를 구할 수 있는 곳은 우정사업본부 사이트에 가면 있습니다.
우정사업본부 URL : http://www.koreapost.go.kr/kpost/sub/subpage.jsp?contId=010101040300
엑셀로 된 자료를 받아서 원하는 자료를 만들기 위해서 작업을 해봤습니다.
시도 / 시군구 / 읍면동 / 리
로 나눠진 걸 가지고 F열처럼 작업을 했습니다.
rngC.Offset(0, i)의 의미만 알면 아래 VBA Code 이해는 쉽게 됩니다.
rngC.Offset(0, i) 에서 Offset(행,열) 이라고 이해하면 됩니다.
rngC 순환 반복하는 셀에서 rngC.Offset(0,0)은 A열의 셀, rngC.Offset(0,1)은 오른쪽으로 한열 이동한 셀이므로 B열, rngC.Offset(0,2)는 C열, rngC.Offset(0,3)은 D열 입니다.
처음 sTxt 에는 값이 없고, For 문을 순환하면서 값이 변수에 저장됩니다.
Sub 주소정리()
Dim rngC As Range
Dim rngAll As Range
Dim sTxt As String
Dim deLimiter As String
Dim i As Integer
Application.ScreenUpdating = False '//화면 업데이트 일시 정지
Set rngAll = Range([A2], Cells(Rows.Count, "A").End(3))
deLimiter = " " '// 구분자
For Each rngC In rngAll '// 각 행을 순차적으로 반복 수행
For i = 0 To 3 '// A열부터 D열까지 반복
sTxt = sTxt & rngC.Offset(0, i) & deLimiter
Next i
rngC.Offset(0, 5) = Trim(sTxt) '// 한행 작업의 결과를 셀에 저장
sTxt = vbNullString '// 한 행의 작업이 끝났으므로 값을 초기화
Next rngC
Set rngAll = Nothing '// 변수 초기화
End Sub
이번에는 변환주소를 가지고 아래 형태로 자료를 추출하려면 어떻게 해야 할까요?
Split 함수를 이용하여 B열의 셀을 배열로 분리하고, 배열 값을 가지고 아래 코드처럼 변환해줍니다.
varTemp 라는 배열은 varTemp(0), varTemp(1), varTemp(2) 이런 식의 값으로 분리됩니다.
배열의 크기가 달라질 수 있으므로 UBound(varTemp) 를 사용하여 가변 변수 최대숫자를 구합니다.
변수에 맞게 Left 함수를 이용하여 sTxt 값을 만들어내고, 원하는 셀에 저장합니다.
Sub 주소변경()
Dim rngC As Range
Dim rngAll As Range
Dim sTxt As String
Dim deLimiter As String
Dim varTemp
Dim i As Integer
Application.ScreenUpdating = False '//화면 업데이트 일시 정지
Set rngAll = Range([B2], Cells(Rows.Count, "B").End(3))
deLimiter = " " '// 구분자
For Each rngC In rngAll '// 각 행을 순차적으로 반복 수행
varTemp = Split(rngC, deLimiter) '// 구분자로 셀을 분리하여 배열에 저장
For i = 1 To UBound(varTemp)
sTxt = sTxt & Left(varTemp(i), Len(varTemp(i)) - 1) & deLimiter
Next i
rngC.Offset(0, -1) = varTemp(0) & deLimiter & Trim(sTxt)
sTxt = vbNullString '// 한 행의 작업이 끝났으므로 값을 초기화
Next rngC
Set rngAll = Nothing '// 변수 초기화
End Sub
'업무 능력 향상 > 엑셀 VBA 활용' 카테고리의 다른 글
홀수행 또는 짝수행만 추출하는 VBA (0) | 2014.10.17 |
---|---|
[VBA] 셀을 분리하여 검사하고 결과를 저장 (0) | 2014.09.24 |
[VBA] 엑셀에서 찾고자 하는 단어를 쉽게 찾는 VBA (0) | 2014.09.19 |
[VBA] 셀 분리 활용 (0) | 2014.09.17 |
[DOS] 폴더와 하위 폴더에 있는 파일명들을 텍스트로 추출하기 (0) | 2014.09.10 |