'우편번호 주소 정리'에 해당되는 글 1건

728x90

우편번호 주소 정리


전국 우편번호 자료를 구할 수 있는 곳은 우정사업본부 사이트에 가면 있습니다.

우정사업본부 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



블로그 이미지

Link2Me

,