엑셀 VBA 10줄로 끝내는 붙여넣기 자동정리 매크로 (복붙 지옥 탈출)

2026-08-07 · 테크 · 읽는데 9분

엑셀에서 복사-붙여넣기 작업을 반복하다 보면 정말 시간이 금방 지나갑니다. 수백 개 행을 일일이 수작업으로 옮기다 보면 어느새 퇴근 시간이 다가와 있죠. 이런 반복 작업을 줄이기 위해 VBA 매크로를 활용할 수 있는데, 알고 보면 코드 10줄 안팎으로 핵심 기능을 구현할 수 있습니다. 값만 붙여넣기, 서식 유지, 행/열 바꿈까지 필요한 상황에 맞는 코드를 골라 쓰면 됩니다.

이번 글에선 붙여넣기 자동 정리에 바로 적용할 수 있는 VBA 코드와 함께, 매크로를 처음 쓰는 분이 부딪히는 보안 설정이나 파일 저장 방식 같은 실전 팁을 정리했습니다.

붙여넣기 자동 정리, 어떤 상황에서 필요할까

반복적인 복사-붙여넣기는 어디서나 등장합니다. 월간 보고서에 부서별 실적을 취합할 때, 프로젝트 일정을 여러 시트에 나눠 넣을 때, 외부에서 받은 데이터를 정해진 양식에 맞춰 옮길 때 모두 해당됩니다. 이렇게 단순하지만 시간을 많이 잡아먹는 작업은 매크로로 만들어 두면 몇 초 만에 끝납니다.

특히 붙여넣기 자동 정리에서 중요한 건 무엇을 붙여넣을지 선택하는 일입니다. 값만 필요한 경우가 있고, 셀 서식이나 수식까지 그대로 가져와야 하는 경우도 있습니다. PasteSpecial 메서드의 옵션을 조절하면 이 기준을 코드로 정확하게 지정할 수 있습니다.

값만 붙여넣기, 서식까지 유지하는 코드 차이

가장 많이 쓰는 건 값만 붙여넣는 코드입니다. 서식이나 수식이 아니라 순수한 데이터만 목적지에 채워 넣습니다. 표 양식은 이미 만들어져 있고 데이터만 갱신해야 할 때 유용합니다.

Sub PasteValuesOnly()
    Dim sourceRange As Range
    Dim targetCell As Range

    Set sourceRange = Application.InputBox("복사할 범위를 선택하세요", Type:=8)
    Set targetCell = Application.InputBox("붙여넣을 시작 셀을 선택하세요", Type:=8)

    sourceRange.Copy
    targetCell.PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False
End Sub

이 코드에서 핵심은 PasteSpecial Paste:=xlPasteValues 부분입니다. 이 한 줄로 값만 깔끔하게 붙여넣어집니다. 반면 테두리나 배경색 같은 서식까지 유지하려면 xlPasteAll을 쓰면 됩니다. 열 너비만 가져오려면 xlPasteColumnWidths, 수식만 복사하려면 xlPasteFormulas를 사용합니다. 붙여넣기 옵션을 상황에 맞게 바꿔가며 쓰면 됩니다.

반복 붙여넣기를 간격과 횟수로 자동화하는 방법

같은 데이터를 여러 위치에 일정한 간격으로 붙여넣어야 하는 경우가 있습니다. 예를 들어 3행짜리 데이터 블록을 18행 간격으로 12번 붙여넣는 식이죠. 이때 For 루프와 InputBox를 조합하면 직접 횟수와 간격을 입력받아 처리할 수 있습니다.

Sub RepeatPasteWithGap()
    Dim sourceRange As Range
    Dim repeatCount As Integer
    Dim interval As Integer
    Dim startRow As Integer
    Dim i As Integer

    Set sourceRange = Application.InputBox("복사할 범위 선택", Type:=8)
    repeatCount = InputBox("반복할 횟수를 입력하세요")
    interval = InputBox("붙여넣기 간격(행 수)을 입력하세요")
    startRow = InputBox("시작 행 번호를 입력하세요")

    For i = 0 To repeatCount - 1
        sourceRange.Copy
        Cells(startRow + (i * interval), 1).PasteSpecial Paste:=xlPasteValues
    Next i

    Application.CutCopyMode = False
    MsgBox "작업이 완료되었습니다!"
End Sub

이 코드를 실행하면 복사할 범위, 반복 횟수, 간격, 시작 위치를 차례로 입력받습니다. 예를 들어 월별 예측 모델을 만들 때 12개월치 데이터를 같은 간격으로 배치해야 한다면 이 방식으로 한 번에 해결됩니다.

세로 데이터를 가로로 바꿔 붙여넣기 (Transpose 활용)

월별 매출이 세로로 정리된 표를 가로 방향 보고서 양식에 맞춰야 할 때가 있습니다. 이때는 Transpose:=True 옵션을 추가하면 행과 열이 바뀐 상태로 붙여넣어집니다.

Sub PasteTransposed()
    Dim sourceRange As Range
    Dim targetCell As Range

    Set sourceRange = Application.InputBox("복사할 범위 선택", Type:=8)
    Set targetCell = Application.InputBox("붙여넣을 시작 셀 선택", Type:=8)

    sourceRange.Copy
    targetCell.PasteSpecial Paste:=xlPasteValues, Transpose:=True
    Application.CutCopyMode = False
End Sub

세로로 길게 늘어진 데이터를 가로로 눕혀서 붙여넣어야 할 때 유용합니다. 특히 여러 시트에 걸쳐 있는 데이터를 한 시트에 가로 방향으로 취합할 때 편리합니다.

빈 셀 제외하고 붙여넣기 (SkipBlanks 옵션)

여러 부서에서 취합한 데이터를 하나의 마스터 시트로 모을 때 문제가 되는 경우가 있습니다. 원본 범위에 빈 셀이 섞여 있으면 붙여넣을 때 목적지에 있던 기존 값을 덮어써버릴 수 있기 때문입니다. SkipBlanks:=True 옵션을 쓰면 빈 셀은 건너뛰고 값이 있는 셀만 붙여넣습니다.

Sub PasteSkipBlanks()
    Dim sourceRange As Range
    Dim targetRange As Range

    Set sourceRange = Application.InputBox("복사할 범위 선택", Type:=8)
    Set targetRange = Application.InputBox("붙여넣을 대상 범위 선택", Type:=8)

    sourceRange.Copy
    targetRange.PasteSpecial Paste:=xlPasteValues, SkipBlanks:=True
    Application.CutCopyMode = False
End Sub

이 방식은 새로 들어온 데이터 중 값이 있는 셀만 갱신하고, 빈 셀은 기존 입력값을 유지하고 싶을 때 사용합니다. 특히 반복 입력되는 취합 문서에서 유용합니다.

매크로 보안 설정과 파일 저장 시 주의사항

매크로를 처음 실행할 때 보안 경고가 뜨면서 실행이 차단되는 경우가 있습니다. 이건 엑셀의 매크로 보안 설정 때문인데, 파일을 열 때마다 매번 허용해 주는 게 번거로울 수 있습니다. 신뢰할 수 있는 매크로 파일이라면 엑셀 옵션에서 매크로 보안을 '모든 매크로 사용'으로 변경하거나, 해당 파일을 신뢰할 수 있는 위치에 저장해 두는 방법을 쓸 수 있습니다.

또한 매크로가 포함된 파일을 다른 사람에게 공유할 때는 반드시 .xlsm 확장자로 저장해야 매크로가 유지됩니다. 일반 .xlsx 파일로 저장하면 매크로 코드가 함께 저장되지 않으니 주의해야 합니다.

Q. 매크로 실행 후 복사 영역에 점선 테두리가 계속 남아 있어요.

Application.CutCopyMode = False 코드를 매크로 마지막에 추가하면 클립보드가 자동으로 비워지면서 점선 테두리가 사라집니다. 이 코드를 빠뜨리면 복사 상태가 계속 유지됩니다.

Q. 특정 시트에서만 매크로가 실행되게 하려면 어떻게 하나요?

시트 이름을 코드에 직접 지정하면 됩니다. 예를 들어 Worksheets("매출").Range("A1").Copy처럼 시트 이름과 범위를 함께 입력하면 원하는 시트에서만 작업이 실행됩니다.

Q. 오류가 나면 매크로가 멈추는데, 계속 실행하게 할 수 없나요?

코드 상단에 On Error Resume Next 구문을 추가하면 오류가 발생해도 프로그램이 중단되지 않고 다음 줄로 넘어갑니다. 다만 이 경우 오류가 있어도 조용히 지나가므로, 실제로는 오류를 확인하는 코드를 함께 넣는 것이 좋습니다.

Q. VBA를 처음 시작하는데, 어디서 코드를 입력해야 하나요?

엑셀에서 Alt + F11을 누르면 VBA 편집기가 열립니다. 삽입 메뉴에서 모듈을 추가한 뒤 코드를 붙여넣고 실행 버튼을 누르면 됩니다. 이후 엑셀 시트에서 Alt + F8을 누르면 매크로 목록이 나타나 실행할 수 있습니다.

엑셀 VBA 붙여넣기 자동 정리는 코드 몇 줄만 익혀두면 반복 작업에서 큰 시간을 절약할 수 있습니다. 처음엔 옵션 하나하나가 낯설게 느껴지겠지만, 기본 코드 하나를 익힌 뒤 PasteSpecial 옵션만 바꿔가며 응용하면 다양한 상황에 대응할 수 있습니다.