728x90

전화번호 정리하는 VBA


엑셀에 있는 여러가지 전화번호 리스트를 보면 숫자로만 되어 있는 경우도 있고, 032)354-2568 처럼 되어 있는 경우도 있고 051-2345-9857 처럼 되어 있는 경우도 있다.

휴대폰번호를 포함하여 전부 다시 정렬하고 싶을 때 사용하려고 작성해봤다.

VBA는 엑셀함수와는 달리 약간의 코딩으로 원하는 결과를 매우 편하게 얻을 수 있다. 도움이 되겠다 싶은 것을 하나 하나 정리해두면 나중에 일을 편하게 할 수 있을 것 같다.


  • Sub 전화번호정렬()

        Dim strU As String      '// 문자를 합쳐갈 변수

        Dim i As Integer        '// 전체 문자길이 만큼 반복할 변수

        Dim rngC As Range       '// 각 Line 변수

        Dim rngAll As Range     '// 전체 범위 지정

        

        Application.ScreenUpdating = False    '// 화면 업데이트 (일시) 중지

        Set rngAll = Range([A2], Cells(Rows.Count, "A").End(3))   '// A2 셀부터 A열의 마지막 셀까지

            

        For Each rngC In rngAll

            For i = 1 To Len(rngC)                      '// 전체 문자길이 만큼 반복

                    If IsNumeric(Mid(rngC, i, 1)) Then  '// 문자열이 숫자일 경우

                        strU = strU & Mid(rngC, i, 1)   '// 각 숫자를 합쳐감

                    End If

            Next i

          

            Select Case Len(strU)     '// IF 문에서 숫자만 추출된 strU 의 길이 검사

                Case 8      '// 전국대표번호 처럼 8자리로 된 경우

                    rngC.Offset(0, 1) = Format(strU, "0000-0000")

                Case 9

                    rngC.Offset(0, 1) = Format(strU, "00-000-0000")

                Case 10

                    If Left(strU, 2) = "02" Then

                        rngC.Offset(0, 1) = Format(strU, "00-0000-0000")

                    Else

                        rngC.Offset(0, 1) = Format(strU, "000-000-0000")

                    End If

                Case 11

                    rngC.Offset(0, 1) = Format(strU, "000-0000-0000")

            End Select

            

            strU = ""   '// 값을 기록했으니까 초기화가 필요함

        Next rngC

        

        Set rngAll = Nothing  '// 변수 초기화

        MsgBox "정리완료"


    End Sub


728x90
블로그 이미지

Link2Me

,