728x90

VBA 데이터 옮기기


옮기고 싶은 데이터를 옮기는 방법은 다양하게 있습니다.

따라서 본인이 옮기고 싶은 과정을 자동 매크로를 이용하여 VBA 코드가 뭔지 알아내보는 것도 좋습니다.

아래 빨간색 부분이 자동 매크로를 통해서 알아낸 부분입니다.

현재 커서가 있는 셀을 기준으로 해서 셀을 선택해서 잘라내고, 왼쪽으로 한칸, 아래로 한칸 이동한 다음에 복사한 것을 붙여넣기 합니다.

행 삽입하는 VBA 코드를 약간만 수정하면 되므로 파일 첨부는 하지 않습니다.



Sub Shift_Data()
    Dim Counter
    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.Value = Trim(ActiveCell.Value)   '// ActiveCell 의 빈공백 제거
        If ActiveCell.Value <> "" Then   '// 현재 셀이 공백이 아니면
            With ActiveCell
                Selection.Cut            '// 선택된 셀/구간을 잘라라
                ActiveCell.Offset(1, -1).Range("A1").Select
                ActiveSheet.Paste
            End With
            Counter = Counter - 1
            ActiveCell.Offset(1, 1).Select  '// 셀을 옮기고 싶은 위치를 지정
        Else
            ActiveCell.Offset(1).Select  '// 1행 아래로 이동
        End If
    Next i
    MsgBox "처리완료"
End Sub


또다른 방법인데, 이 방법이 훨씬 더 간결하고 간단하게 옮기는 방법입니다.

복사할 구간 범위를 설정하고 다른 시트로 복사하는 방법입니다.


Sub Copy_Data()
    Dim rngC As Range
    Dim rngAll As Range

    Application.ScreenUpdating = False      '// 화면 업데이트 (일시)정지
    Set rngAll = Range([A2], Cells(Rows.Count, "E").End(3))
     '// 추출한 데이터가 있는 셀 범위 지정
        
    With Worksheets("data")  '// 해당 시트명 직접 입력
         rngAll.Copy .Cells(Rows.Count, 1).End(3)(2)
         '// 구간범위 전체를 복사하여 지정한(data) 시트의 마지막 값이 들어있는 아래행에 복사하라

           '// Cells(행, 열) 개념을 생각하면 cells(행,1) 의 의미는 첫번째 열 즉 A열을 의미
    End With
            
    MsgBox "처리완료"
End Sub


728x90

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

[VBA기초] 열 자동 맞춤  (0) 2014.03.26
[VBA] 글꼴 변경  (0) 2014.03.09
VBA 빈행 삽입하기  (6) 2014.03.02
VBA 빈셀은 지우고 한글은 우측셀로 이동시키기  (0) 2014.02.28
VBA 괄호제거  (0) 2014.02.26
블로그 이미지

Link2Me

,