OFFSET 프로퍼티는 특정 셀이나 범위를 기준으로 일정한 행과 열만큼 떨어진 위치를 참조합니다. OFFSET은 엑셀 VBA에서 배열을 활용할 때도 많이 사용되고, 범위를 동적으로 설정할 때 RESIZE와 함께 사용되는 등 쓰임새가 다양합니다. 이번 글에서는 OFFSET의 기본 개념을 소개하고, 구체적인 활용 예시는 다른 글에서 알아보겠습니다.
#1. OFFSET의 기본 구문
<기본 구문>
셀/범위.Offset(RowOffset, ColumnOffset)
- 셀/범위: 기준이 되는 셀이나 범위.
- RowOffset: 기준 셀에서 이동할 행의 수(양수는 아래쪽, 음수는 위쪽). 생략 불가능
- ColumnOffset: 기준 셀에서 이동할 열의 수(양수는 오른쪽, 음수는 왼쪽). 생략 시 '0'(행 이동만)
▲ 직접 실행창(Visual Basic > 보기)에서 아래의 코드를 차례대로 입력후 엔터를 눌러보시면 기본구문에 대한 감을 익히실 수 있습니다.
?range("B2").offset(1).Address
?range("B2").offset(-1).Address
?range("B2").offset(0,1).Address
?range("B2").offset(0,-1).Address
?range("B2").offset(1,1).Address
?range("B2").offset(-1,-1).Address
#2. 범위를 기준으로 OFFSET 매서드를 사용하기
셀/범위.Offset(RowOffset, ColumnOffset)에서 셀을 기준으로 OFFSET을 사용할 때의 결과는 앞서 소개해드린 기본구문으로도 충분히 설명될 것입니다. 하지만 셀 대신 범위를 기준으로 OFFSET을 사용할 때는 헷갈릴 수 있을텐데요.
범위를 기준으로 OFFSET을 사용할 때는 범위가 시작되는 셀을 기준으로 범위가 이동합니다.
▲ 직접 실행창에 range("A1:B2").Offset(2,2).Select를 입력 후 실행한 결과, 위의 사진처럼 "C2:D4" 범위가 선택됩니다. 즉, 기존 범위인 "A1:B2"의 시작 셀인 A1을 기준으로 범위가 아래로 2개 행, 오른쪽으로 2개 열 이동한 것입니다.
이번 글에서는 OFFSET의 기본적인 개념과 사용 시 결과에 대해 소개해 드렸는데요. 다른 글을 통해 상품 분류별 월별 판매액 합계 구하기, RESIZE와 함께 사용하여 동적으로 범위를 설정하기 등 실용적인 활용 예시를 소개해드리겠습니다.
▲ (참고) RESIZE 프로퍼티 소개글
'엑셀, VBA, 파워쿼리 > VBA 매크로' 카테고리의 다른 글
[VBA 매크로] 사용자 정의 함수 만들기 [날짜 형식 변환 함수(YYYYMMDD ↔ YYYY-MM-DD)] (0) | 2024.09.09 |
---|---|
[VBA 매크로] Offset과 Resize로 데이터 범위 참조 및 조정하기(기존 데이터 지우기) (0) | 2024.08.25 |
[VBA 매크로] Rows.Count와 Columns.Count로 데이터 범위 행 수와 열 수 구하기 (0) | 2024.06.25 |
[VBA 매크로] Resize 프로퍼티로 범위 선택하기(Range.Resize) (0) | 2024.05.14 |
[VBA 매크로] CurrentRegion 프로퍼티로 Range 동적으로 설정하기 (0) | 2024.05.06 |
댓글