빈셀은 지우고 한글은 우측셀로 이동시키는 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문의 순서에 따라 우선순위가 정해집니다.
'업무 능력 향상 > 엑셀 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 |