엑셀 VBA로 붙여넣기 10초 만에 자동 정리하는 매크로 샘플 3가지

2026-07-31 · 테크 · 읽는데 8분

엑셀에서 같은 데이터를 여러 곳에 붙여넣어야 하는 반복 작업, 특히 수백 개의 행을 일일이 복사하고 붙여넣는 일은 정말 시간 낭비가 큽니다. VBA 매크로를 한 번만 만들어 두면 이 작업을 몇 초 만에 끝낼 수 있는데요, 오늘은 붙여넣기 자동 정리에 바로 활용할 수 있는 매크로 샘플 3가지를 소개합니다.

반복 붙여넣기를 몇 초 만에 끝내는 핵심 코드

엑셀 VBA에서 복사와 붙여넣기를 자동화하는 가장 기본적인 방식은 Range.Copy 메서드와 Range.PasteSpecial 메서드를 활용하는 것입니다. 아래 코드는 특정 범위를 복사해 원하는 위치에 지정한 간격만큼 반복해서 붙여넣는 매크로입니다. 매크로를 실행하면 입력 창이 뜨고, 복사할 범위와 붙여넣을 간격, 반복 횟수를 직접 지정할 수 있습니다.

Sub PasteWithInterval()
    Dim copyRange As Range
    Dim pasteStart As Long
    Dim interval As Long
    Dim repeatCount As Long
    Dim i As Long
    Dim currentRow As Long

    ' 복사할 범위를 사용자가 직접 선택
    Set copyRange = Application.InputBox("복사할 범위를 선택하세요", Type:=8)

    ' 붙여넣기 시작 위치 입력
    pasteStart = InputBox("붙여넣기를 시작할 행 번호를 입력하세요")

    ' 붙여넣기 간격 입력
    interval = InputBox("붙여넣기 간격(행 수)을 입력하세요")

    ' 반복 횟수 입력
    repeatCount = InputBox("몇 번 붙여넣을까요?")

    ' 원본 복사
    copyRange.Copy

    ' 반복 붙여넣기
    currentRow = pasteStart
    For i = 1 To repeatCount
        Cells(currentRow, copyRange.Column).PasteSpecial Paste:=xlPasteValues
        currentRow = currentRow + interval
    Next i

    ' 클립보드 비우기
    Application.CutCopyMode = False

    MsgBox "작업이 완료되었습니다!"
End Sub

이 코드의 핵심은 PasteSpecial에 xlPasteValues 옵션을 사용한 부분입니다. 이렇게 하면 서식이나 수식이 아닌 값만 깔끔하게 붙여넣어집니다. 표나 보고서 양식을 유지한 채 데이터만 채워 넣을 때 특히 유용합니다.

값만 붙여넣기와 서식까지 복사하는 방법 비교

복사한 셀을 붙여넣을 때 값만 필요한 경우가 있고, 테두리나 배경색 같은 서식까지 함께 유지해야 하는 경우가 있습니다. 자동 정리 매크로를 만들 때 이 차이를 이해하고 있어야 상황에 맞는 코드를 선택할 수 있습니다.

값만 붙여넣기로 자동 정리하는 코드는 위에서 소개한 것처럼 xlPasteValues를 사용합니다. 반면 서식까지 모두 유지하려면 xlPasteAll을 사용하거나, 아예 대상 셀의 값을 직접 할당하는 방식을 쓸 수 있습니다. 아래 코드는 값만 붙여넣는 가장 간단한 형태입니다.

Sub PasteValuesOnly()
    ' A1:D10 범위의 값을 F1으로 복사 (서식 제외)
    Range("A1:D10").Copy
    Range("F1").PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False
End Sub

특정 속성만 골라서 붙여넣고 싶다면 PasteSpecial의 인자를 바꾸면 됩니다. 열 너비만 복사하려면 xlPasteColumnWidths, 수식만 복사하려면 xlPasteFormulas를 사용합니다. 이렇게 옵션을 조합하면 데이터 정리 작업을 훨씬 세밀하게 제어할 수 있습니다.

복잡한 붙여넣기 조건, 행과 열을 바꿔서 자동 정리하기

가끔은 세로로 정렬된 데이터를 가로로 바꿔서 붙여넣어야 할 때가 있습니다. 엑셀에서 이 기능을 '행/열 바꿈(Transpose)'이라고 하는데, VBA에서는 PasteSpecial에 Transpose:=True 옵션을 추가하면 됩니다. 아래 코드는 선택한 영역을 복사해서 행과 열을 바꾼 상태로 다른 위치에 붙여넣는 매크로입니다.

Sub PasteTransposed()
    Dim srcRange As Range

    ' 사용자에게 복사할 범위 입력받기
    Set srcRange = Application.InputBox("복사할 범위를 선택하세요", Type:=8)

    ' 원본 복사
    srcRange.Copy

    ' 붙여넣기 대상 셀 (예: A20)
    Range("A20").PasteSpecial Paste:=xlPasteAll, Transpose:=True

    Application.CutCopyMode = False
End Sub

이 매크로를 사용하면 월별 매출 데이터가 세로로 정리된 표를 가로 방향 보고서 양식에 맞춰 한 번에 붙여넣을 수 있습니다. 기존에 수작업으로 하나씩 옮기던 작업을 생각하면 시간 절약 효과가 상당합니다.

반복 작업이 많다면, 빈 셀을 건너뛰는 똑똑한 붙여넣기

데이터를 정리하다 보면 원본 범위에 빈 셀이 섞여 있는 경우가 있습니다. 이때 빈 셀까지 그대로 붙여넣으면 목적지에 있던 기존 데이터를 덮어써서 문제가 생길 수 있습니다. PasteSpecial의 SkipBlanks 옵션을 활성화하면 빈 셀을 제외하고 값이 있는 셀만 붙여넣을 수 있습니다.

Sub PasteSkipBlanks()
    ' A1:C10 범위를 복사해서 E1에 붙여넣되, 빈 셀은 기존 값 유지
    Range("A1:C10").Copy
    Range("E1").PasteSpecial Paste:=xlPasteValues, SkipBlanks:=True
    Application.CutCopyMode = False
End Sub

이 방식은 여러 부서에서 취합한 데이터를 하나의 마스터 시트로 모을 때 유용합니다. 새로 들어온 데이터 중 값이 있는 셀만 갱신하고, 빈 셀은 기존 입력값을 그대로 유지하고 싶을 때 사용하면 됩니다.

매크로 실행 전 꼭 확인해야 할 보안 설정

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

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

자주 묻는 질문(FAQ)

Q. 매크로 실행 중 오류가 나면 어떻게 하나요?

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

Q. 붙여넣기 후 클립보드가 계속 남아 있는데 지우는 방법은?

Application.CutCopyMode = False 코드를 매크로 마지막에 추가하면 엑셀 클립보드가 자동으로 비워집니다. 이 코드가 없으면 복사된 영역에 점선 테두리가 계속 남아 있을 수 있습니다.

Q. 특정 시트에만 매크로를 적용하고 싶은데 어떻게 하나요?

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