전화번호 정리하는 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
'업무 능력 향상 > 엑셀 VBA 활용' 카테고리의 다른 글
[VBA] 2개의 조건(다중조건)이 일치하는 데이타 찾기 (0) | 2015.05.31 |
---|---|
[VBA] 전화번호 - 들어간 거 제거하기 (0) | 2015.05.29 |
[VBA] 다른 엑셀파일 내용 가져오기 (2) | 2015.05.26 |
영화자막 하이픈 처리 (0) | 2015.05.24 |
[VBA] 중복제거 함수의 버그(?) (0) | 2015.05.22 |