728x90

전화번호에 - 가 들어간 경우 이걸 제거하고 앞자리에 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


728x90
블로그 이미지

Link2Me

,