- 최초 작성일: 2025-01-25
- 최종 수정일: 2026-09-24
- 조회수: 40 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: 선택된 범위를 변경하고 떨어진 영역 복사하기
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
아래와 같은 표가 있습니다. 여기서 특정한 영역만 복사하려면 어떻게 할까요? 예를 들어 '강서'와 '강북' 지역 데이터만 다른 곳에 복사하고자 한다면 어떻게 해야 할까요?
선택된 범위를 변경하고 떨어진 영역 복사하기
핵심 요약: Ctrl로 선택 영역을 조정해 떨어진 영역만 복사
표 전체를 선택한 뒤 <Ctrl> 키를 누른 채 제외할 영역을 드래그하면 선택에서 빠지고, 그 상태로 복사·붙여넣기 하면 떨어진 영역만 빈틈없이 붙여넣어집니다. Office 365가 아니라면 VBA로 같은 결과를 얻을 수 있습니다.
- 1단계: 표 전체 영역을 범위로 지정
- 2단계: <Ctrl> 키를 누른 채 제외할 영역(강동, 강남) 드래그
- 3단계: <Ctrl+C>, <Ctrl+V>로 선택된 영역만 복사
- 대안: 이 기능이 없는 버전은 VBA '다중 영역 복사' 매크로 활용
개요
대개의 사용자가 다음 방법 중 하나를 사용하리라 생각합니다.
- 표 전체를 복사한 다음, '강동' 지역 데이터 삭제
- 표의 제목을 복사한 후 '강동' 이외 지역 복사
- 필터 기능 사용
- 피벗 테이블 사용
물론 이것 말고 다른 기발한(?) 방법을 사용하는 분들이 있을지도 모릅니다.
'Office 365' 버전을 사용하는 경우에는 다음과 같이 할 수도 있습니다. 만약 이런 식으로 일일이 지정해야 할 영역이 많은 상황이라면 편리할 수 있겠군요.
(1) 표 전체 영역을 범위로 지정합니다.
(2) <Ctrl> 키를 누른 채 선택을 제거할 영역을 드래그합니다(여기서는 A2:E5, A9:E13 영역).
(3) 이 상태에서 복사하여(<Ctrl + C>) 붙여넣기(<Ctrl + V>) 하면 선택된 영역만 복사됩니다.
다시 한 번 말씀드리지만, 이 기능은 'Office 365' 버전 사용자와 'Office 참가자 프로그램(Office Insider program)'에 가입되어 있어야 제대로 작동됩니다.
만약 이 조건에 해당하지 않는 경우라면 VBA로 코딩을 하면 가능합니다.
<Ctrl> 키를 이용하여 여러 범위를 선택하고, '다중 영역 복사' 버튼을 클릭한 다음, 붙여 넣을 셀을 클릭해 보세요.
다음은 예제 파일의 '다중 영역 복사' 버튼에 연결되어 있는 코드입니다(코드가 무지막지하죠?). 나중에 VBA를 공부한 후에 다시 살펴보면 이해되는 순간이 올 겁니다. 지금 단계에서는 코드를 복사해서 활용할 줄만 알아도 됩니다.
Sub MultiRangeCopy()
Dim intHowManyAreas As Integer
Dim i As Integer
Dim intNotEmpty As Integer
Dim lngTopRow As Long
Dim intLeftColumn As Integer
Dim lngRowOffset As Long
Dim intColumnOffset As Integer
Dim rngAreas() As Range
Dim rngTarget As Range
intHowManyAreas = Selection.Areas.Count
ReDim rngAreas(1 To intHowManyAreas)
For i = 1 To intHowManyAreas
Set rngAreas(i) = Selection.Areas(i)
Next
lngTopRow = ActiveSheet.Rows.Count
intLeftColumn = ActiveSheet.Columns.Count
With rngAreas(1)
If .Row < lngTopRow Then lngTopRow = .Row
If .Column < intLeftColumn Then intLeftColumn = .Column
End With
Set rngTarget = Application.InputBox("붙여넣을 좌측 상단 셀 선택:", Type:=8)
Set rngTarget = rngTarget.Cells(1)
For i = 1 To intHowManyAreas
lngRowOffset = rngAreas(i).Row - lngTopRow
intColumnOffset = rngAreas(i).Column - intLeftColumn
intNotEmpty = intNotEmpty + Application. _
CountA(Range(rngTarget.Offset(lngRowOffset, intColumnOffset), _
rngTarget.Offset(lngRowOffset + rngAreas(i).Rows.Count - 1, _
intColumnOffset + rngAreas(i).Columns.Count - 1)))
Next i
If intNotEmpty <> 0 Then
If MsgBox("기존 데이터에 겹쳐 쓸까요?", vbQuestion + vbYesNo) <> vbYes Then
Exit Sub
End If
End If
For i = 1 To intHowManyAreas
lngRowOffset = rngAreas(i).Row - lngTopRow
intColumnOffset = rngAreas(i).Column - intLeftColumn
rngAreas(i).Copy rngTarget.Offset(lngRowOffset, intColumnOffset)
Next i
End Sub
이번 강좌는 VBA가 아니라 엑셀 강좌 시간인 관계로 코드에 대한 설명은 건너뜁니다.
참고: 이미지에 대하여
이 글은 원래 네이버 포스트에 게재되었던 글로, 네이버 포스트 서비스 종료로 네이버 블로그로 옮기는 과정에서 원본 이미지가 소실되었습니다. 위 이미지는 본문 설명을 바탕으로 재구성한 예시 화면이며, 실제 데이터와는 다를 수 있습니다.
정리 — 떨어진 영역 복사하기
| 방법 | 핵심 동작 | 조건 |
|---|---|---|
| Ctrl 선택 해제 | 전체 선택 후 Ctrl+드래그로 제외 영역 선택 해제 → Ctrl+C/V | Office 365 + Office Insider Program |
| VBA 매크로 | Selection.Areas로 여러 영역을 읽어 상대 위치대로 복사 | 모든 버전 (VBA 사용 가능 환경) |
자주 묻는 질문 (FAQ)
Q1. Ctrl 키로 선택 영역을 줄이는 방법은 무엇인가요?
먼저 표 전체를 범위로 지정한 다음, <Ctrl> 키를 누른 채 제외하고 싶은 영역을 드래그하면 그 부분만 선택에서 제거됩니다. 이 상태로 <Ctrl>+<C>, <Ctrl>+<V>를 하면 남아있는 선택 영역만 빈틈없이 복사됩니다.
Q2. 이 기능은 모든 엑셀 버전에서 되나요?
아닙니다. 'Office 365' 버전이면서 'Office 참가자 프로그램(Office Insider program)'에 가입되어 있어야 제대로 작동합니다. 조건에 해당하지 않는다면 VBA로 같은 기능을 구현해야 합니다.
Q3. 이 기능이 없는 버전에서는 어떻게 하나요?
VBA를 사용합니다. Selection.Areas 컬렉션으로 Ctrl로 선택한 여러 영역을 각각 읽어와, 지정한 붙여넣을 위치를 기준으로 상대 위치를 계산해 순서대로 복사하는 매크로(예: '다중 영역 복사' 버튼)를 만들면 됩니다.
마치며
VBA에 대한 기초 지식을 공부하실 분은 아이엑셀러 닷컴 사이트 상단 메뉴에서 [Excel 강의] - [Excel 입문]을 먼저 보시면 이해하기 쉽습니다.