전화번호에 - 가 들어간 경우 이걸 제거하고 앞자리에 0이 같이 표기되도록 하고 싶은 경우에는
Replace 함수를 사용하면 앞자리 0 이 지워진다. 엑셀에서 제공하는 substitute 함수를 이용하면 0이 지워지지 않고 남아있다.
엑셀 셀서식의 오류를 방지하기 위해서 A열 전체를 텍스트 서식으로 지정했다.
작업해야 할 데이터가 너무 많으면 For Each Next 문을 분할해서 처리하는 게 좋다.
범위구간을 너무 많이 잡으면 메모리를 많이 차지하여 원하는 작업을 하는데 속도저하가 심하게 일어난다.
http://link2me.tistory.com/617 보다 더 효율적으로 구간설정하는 법을 알게되면 업데이트 해두려고 한다.
구간을 설정하는 방법을
Set rngAll = Range([A2], Cells(Rows.Count, "A").End(3))
라고 할 수도 있지만,
Set rngAll = Range("A2:A" & Cells(Rows.Count, "A").End(3).Row) 라고 설정할 수도 있다.
Sub 전화번호대쉬제거()
Dim rngC As Range '// 각 셀을 넣을 변수
Dim rngAll As Range '// 선택영역 전체 범위 변수
Range([A2], Cells(Rows.Count, "A")).NumberFormat = "@" '// 텍스트 서식으로
Set rngAll = Range([A2], Cells(Rows.Count, "A").End(3))
On Error Resume Next
rngAll.SpecialCells(xlCellTypeBlanks).EntireRow.Delete '// 빈셀일 경우 해당 Row(행) 삭제
For Each rngC In rngAll
rngC = Application.Substitute(rngC, "-", "")
Next rngC
Set rngAll = Nothing '// 변수 초기화
MsgBox "완료"
End Sub
'업무 능력 향상 > 엑셀 VBA 활용' 카테고리의 다른 글
[VBA] 주소 분리 변환 (0) | 2015.06.01 |
---|---|
[VBA] 2개의 조건(다중조건)이 일치하는 데이타 찾기 (0) | 2015.05.31 |
[VBA] 전화번호 정리하기 (0) | 2015.05.29 |
[VBA] 다른 엑셀파일 내용 가져오기 (2) | 2015.05.26 |
영화자막 하이픈 처리 (0) | 2015.05.24 |