728x90

빈셀은 지우고 한글은 우측셀로 이동시키는 VBA


Sub 빈셀지우고한글우측이동()
    Dim Counter
    Dim splitT As Byte '// (시작위치 변수 지정
    Dim endT            '// ( 마지막 위치 지정
    Dim i As Integer
    Dim rngTarget As Range
 
    Application.ScreenUpdating = False      '//화면 업데이트 (일시)정지
    ActiveCell.Select
    Set rngTarget = Range(ActiveCell, Cells(Rows.Count, ActiveCell.Column).End(3))
    Counter = rngTarget.Rows.Count
    ' 반복할 줄 수 표시
    For i = 1 To Counter
        ActiveCell.Hyperlinks.Delete         '// 하이퍼링크 제거
        ActiveCell.Value = Trim(ActiveCell.Value)  '해당셀의 좌우 공백을 제거     
        If ActiveCell.Value = "" Then
            Selection.EntireRow.Delete     '//공백이면 해당 행을 삭제하라
            Counter = Counter - 1    '//전체 행수를 하나 줄여라
        ElseIf InStr(ActiveCell.Value, "(") = 1 Then  '//첫글자에 (가 들어가 있으면
            splitT = InStr(ActiveCell.Value, "(")
            endT = InStr(ActiveCell.Value, ")")
            ActiveCell.Value = Mid(ActiveCell.Value, splitT + 1, endT - splitT - 1)          
            ActiveCell.Offset(1, 0).Select  '// 다음 셀로 이동
        ElseIf InStr(ActiveCell.Value, "(") > 0 Then
            splitT = InStr(ActiveCell.Value, "(")
            endT = InStr(ActiveCell.Value, ")")
            ActiveCell.Offset(0, 2) = Mid(ActiveCell.Value, splitT + 1, endT - splitT - 1)
            ActiveCell.Value = Left(ActiveCell.Value, splitT - 1)          
            ActiveCell.Offset(1, 0).Select  '// 다음 셀로 이동
        ElseIf InStr(ActiveCell.Value, ";") > 0 Then
            splitT = InStr(ActiveCell.Value, ";")
            ActiveCell.Offset(0, 2) = Trim(Mid(ActiveCell.Value, splitT + 1, Len(ActiveCell.Value) - splitT + 1))
            ActiveCell.Value = Trim(Left(ActiveCell.Value, splitT - 1))           
            ActiveCell.Offset(1, 0).Select   '// 다음 셀로 이동
        ElseIf Left(ActiveCell.Value, 4) Like "*[가-힣]*" Then   '// 해당 셀이 한글을 포함하는지 검사
            Selection.Cut  '//해당셀 잘라내기
            ActiveCell.Offset(-1, 1).Range("A1").Select  '// 위로 한줄 이동하고 오른쪽으로 한칸 이동
            ActiveSheet.Paste  '// 값 붙여넣기
            ActiveCell.Offset(1, -1).Range("A1").Select  '// 아래로 한줄 이동하고 왼쪽으로 한칸 이동
            Selection.EntireRow.Delete  '// 한줄 전체 삭제
        Else           
            ActiveCell.Offset(1, 0).Select  '// 다음 셀로 이동
        End If
    Next i

    'Columns("A:H").AutoFit
    '열의 너비를 자동으로 맞추는 건데 필요하면 콤마 제거하고 사용하세요

End Sub


INSTR 함수를 이용하여 [ ] 사항도 처리할 수도 있고 원하는 사항을 IF문으로 추가하면 됩니다.

간혹 자료가 하이퍼링크가 걸려 있는 경우도 있을때도 있어 추가를 해두었는데 필요한 사항에 따라 추가하거나 삭제해서 사용하면 됩니다.

위 VBA 코드는 현재 셀(ActiveCell) 아래셀로 내려가면서 해당사항을 처리합니다.

따라서 IF문의 순서에 따라 우선순위가 정해집니다.



728x90

'업무 능력 향상 > 엑셀 VBA 기초' 카테고리의 다른 글

VBA 데이터 옮기기  (0) 2014.03.04
VBA 빈행 삽입하기  (6) 2014.03.02
VBA 괄호제거  (0) 2014.02.26
[VBA기초] 빈행 삭제  (4) 2014.02.06
복사할 때 글자색도 같이 넣는 방법  (0) 2014.01.29
블로그 이미지

Link2Me

,