[VBA 매크로] Offset과 Resize로 데이터 범위 참조 및 조정하기(기존 데이터 지우기)
엑셀, VBA, 파워쿼리/VBA 매크로

[VBA 매크로] Offset과 Resize로 데이터 범위 참조 및 조정하기(기존 데이터 지우기)

by Jongg 2024. 8. 25.
728x90

 

엑셀에서 VBA를 사용할 때 OFFSET과 RESIZE 메서드를 함께 활용하면 동적으로 데이터 범위를 참조하고 조정할 수 있어 편리합니다. 이번 글에서는 VBA에서 OFFSET과 RESIZE를 각각 소개하고 함께 사용하는 방법을 소개하겠습니다. 그리고 대표적인 사용예시로 기존 데이터를 지우는 방법을 알아보겠습니다.

 

RESIZE와 함께 사용되는 Rows.Count 와 Columns.Count는 아래의 글을 참고해주세요.

 

[VBA 매크로] Rows.Count와 Columns.Count로 데이터 범위 행 수와 열 수 구하기

엑셀 VBA를 활용할 때 Rows.Count와 Columns.Count 속성을 사용하면 특정 범위의 행과 열의 개수를 구할 수 있습니다. Rows.Count와 Columns.Count는 행/열의 수를 구할 때 뿐만 아니라, 범위를 동적으로 설정하

writingpjt.tistory.com

 

#1. OFFSET과 RESIZE 매서드 소개

 

1)OFFSET 메서드의 기본 구문 
RangeObject.Offset(RowOffset, ColumnOffset)
- RangeObject: 기준이 되는 셀 또는 범위입니다.
- RowOffset: 기준 셀에서 참조할 셀로 이동할 행의 수입니다. 양수는 아래쪽으로, 음수는 위쪽으로 이동합니다.
- ColumnOffset: 기준 셀에서 참조할 셀로 이동할 열의 수입니다. 양수는 오른쪽으로, 음수는 왼쪽으로 이동합니다.

 

2) RESIZE 메서드의 기본 구문
RangeObject.Resize(RowSize, ColumnSize)
- RangeObject: 크기를 변경할 셀 또는 범위입니다.
- RowSize: 변경할 범위의 행 수입니다.
- ColumnSize: 변경할 범위의 열 수입니다.

 

#2. OFFSET과 RESIZE 함께 사용해보기

 

1) 기본구문
RangeObject.Offset(RowOffset, ColumnOffset). Resize(RowSize, ColumnSize)

 

2) 활용 예시: A1셀에서 시작하여 B2:D3 범위 참조하기

▲ 직접실행창에 Range("A1").Offset(1,1).Resize(2,3).Select 구문을 입력한 결과입니다. Offset(1,1)은 A1셀에서 아래로 한 행, 오른쪽으로 한 열 움직이라는 명령문입니다. Resize(2,3)은 현재 이동한 범위를 행이 2개, 열이 3개인 범위로 크기를 재조정하는 명령문입니다.

위의 명령문을 실행할 시 Offset 구문으로 인해 A1셀에서 시작하여 B2셀을 참조하게 되며, Resize 구문으로 인해 B2셀을 행 2개, 열 3개짜리 범위로 크기를 재조정하여 B2:D3 범위를 참조하게 됩니다.    

 

728x90

 

#3. 사용예시: 기존 데이터 지우기

 

Offset-Resize 구문과 Rows.Count, Columns.Count를 사용하면 매크로를 활용하여 표에서 기존 데이터를 지울 수 있습니다. 

▲ 위의 표(A1:B6 범위)에서 '이름', '나이' 등 데이터 항목명을 제외한 데이터 범위를 매크로로 지우는 상황을 가정해 봅시다. 

Sub test()
Dim tbl As Range '범위 변수 설정
Set tbl = Worksheets(1).Range("A1").CurrentRegion 'tbl 변수를 A1셀에서 연결된 범위(표 범위)로 정의

    tbl.Offset(1, 0).Resize(tbl.Rows.Count - 1, tbl.Columns.Count).Clear
    'tbl 범위를 1행 아래로 이동후, 행 수-1 만큼 크기 재조정 후 해당 범위 데이터 지우기(Clear)

    
End Sub

▲ 위의 구문의 매크로를 만들어서 실행해 봅니다.  

 

▲ 실행결과 데이터 머릿글행 제외하고 나머지 데이터 부분은 지워졌습니다. 이러한 매크로는 기존의 데이터를 지우고, 표를 매크로로 다시 업데이트할 때 활용됩니다.    

 

728x90

댓글