VBA 기초 네 번째 포스팅입니다. Offset 속성에 대해서 알아보겠습니다. Offset 속성은 동적으로 셀의 위치를 찾거나 할 때 자주 사용되는 속성 중 하나입니다.
실제 코드를 활용하여 Offset 코드는 어떻게 사용이 되는지 예제들과 함께 알아보겠습니다.
Offset 이해하기
Offset 함수를 아시는 분이면 빠른 이해를 할 수 있습니다.
기준셀을 기준으로 좌 우 상 하로 움직이는 함수인데요, VBA에서도 똑같은 역할을 합니다.
OFFSET에는 2개의 인수가 있습니다.
Offset(RowOffset, ColumnOffset) 이 됩니다.
RowOffset 인수는 행의 위치를 위아래로 움직일 숫자를 입력할 수 있습니다
음수 값은 위로, 양수 값은 아래로 움직일 수 있습니다.
ColumnOffset 인수는 열의 위치를 좌 우로 움직일 숫자를 입력할 수 있습니다.
음수 값은 좌로 , 양수 값은 우로 움직일 수 있습니다.
예를 들면
Offset(1,2)를 쓰게 되면
기준셀에서 아래로 1칸, 오른쪽으로 2칸을 이동합니다.
Range("A1"). Offset(1, 2). Select
A1셀을 기준으로 아래로 한 칸 오른쪽으로 두 칸 이동해서 셀을 선택하라라고 코드를 입력했습니다.
조금 더 이해를 돕기 위해 이미지로 표현했습니다.
A1셀을 기준으로 1칸 아래로 2칸 오른쪽으로 이동하게끔 작동을 합니다.
✌ Offset 인수 내에 기준셀의 위치를 놓고 싶으면 0을 입력하면 됩니다.
참고로 Offset 내에서 0은 생략이 가능합니다.
예)
Range("B1"). offset(2,). select
를 입력하면
B3셀을 선택하게 됩니다.
Offset 활용하기
End(xlup)을 활용해서 열의 마지막 행을 찾은 다음 아래 행을 선택하는 수식을 알아보겠습니다.
Cells(Rows.Count, "A"). End(xlUp). Offset(1, 0). Select
A열의 행 개수를 센 다음 위로 올라옵니다.
그다음 Offset으로 1행을 내려와서 셀 선택을 하는 코드입니다.
이 코드는 데이터를 누적할 때 너무나도 많이 사용되는 코드입니다.
예상되시죠?
Dim ab As Range
For Each ab In Range("A1:B19")
If ab <= 300 Then
Cells(Rows.Count, "I"). End(xlUp). Offset(1, 0). Value = ab
End If
Next
AB열을 범위로 선언하고
For Each 반복문으로
AB 범위 내에서 300보다 작거나 같은 값을 I열에 위로 마지막행 아래 행에 데이터가 누적되게끔 하는 방법입니다.
도움 되셨으면 좋아요 와 댓글 감사합니다 ❤
포스팅에 사용된 파일 공유합니다.
비밀번호는 댓글 주시면 공유합니다 :)
'엑셀공부 > VBA 하루에 하나씩' 카테고리의 다른 글
엑셀 VBA 매크로 Currentregion 배우기 (0) | 2024.07.17 |
---|---|
엑셀 VBA 기초 EntireRow, EntireColumn 속성 알아보기 (0) | 2024.07.11 |
엑셀 VBA 기초 END 속성 ROWS.COUNT (0) | 2024.07.07 |
엑셀 VBA 기초 RANGE, CELLS 셀 선택하기 (2) | 2024.06.30 |
엑셀 마지막 행 값 가져오기 함수와 매크로 VBA 방법 알아보기 (5) | 2023.12.13 |