R1C1 셀 참조 스타일은 상대적인 셀 참조를 사용하는 방식으로, 현재 셀을 기준으로 상대적인 위치를 나타냅니다. 이를 통해 복잡한 작업을 더욱 간편하게 수행할 수 있습니다. R1C1 셀 참조는 다음과 같은 형식을 따릅니다:
- `R`은 "Row"의 약자로, 행을 나타냅니다.
- `C`는 "Column"의 약자로, 열을 나타냅니다.
따라서 `R1C1`은 1행 1열의 셀을 의미하며, `R2C3`은 2행 3열의 셀을 의미합니다.
R1C1 스타일을 이용하면 복잡한 계산을 간결하게 표현하고, 범위에 일관된 수식을 적용하며, 코드의 유연성을 향상시킬 수 있습니다.
아래 두 가지 코드를 통해 일반적인 셀 참조 방식인 A1 스타일과 R1C1 스타일을 비교 해보겠습니다.
1. VBA 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
'R1C1 사용하지 않고 Table 완성하기
Sub 곱셈표_1()
Dim nr As Integer, nc As Integer
Dim i As Integer, j As Integer
nr = Cells(Rows.Count, 2).End(xlUp).Row
nc = Cells(4, Columns.Count).End(xlToLeft).Column
For i = 5 To nr
For j = 3 To nc
Cells(i, j) = Cells(4, j) * Cells(i, 2)
Next j
Next i
End Sub
'R1C1 사용하여 Table 완성하기
Sub 곱셈표_2()
Dim nr As Integer, nc As Integer
nr = Cells(Rows.Count, 2).End(xlUp).Row
nc = Cells(4, Columns.Count).End(xlToLeft).Column
Range(Cells(5, 3), Cells(nr, nc)).FormulaR1C1 = "=R4C*RC2"
End Sub
|
cs |
2. 코드 해석
두 코드 모두 행/열에 입력된 숫자의 개수를 파악하여 곱셈표를 만드는 코드입니다.

1. 곱셈표_1
- Dim nr As Integer, nc As Integer '행번호/열번호를 입력할 변수 선언
- Dim i As Integer, j As Integer '곱셈표 내부 전체 셀 입력을 위한 변수 선언
- nr = Cells(Rows.Count, 2).End(xlUp).Row '표에 입력된 가장 마지막 행 번호 찾기
- nc = Cells(4, Columns.Count).End(xlToLeft).Column '표에 입력된 가장 마지막 열 번호 찾기
- For i = 5 To nr '행 순환을 위한 for 문
- For j = 3 To nc '열 순환을 위한 for 문
- Cells(i, j) = Cells(4, j) * Cells(i, 2) '기준 행/열의 곱셈 결과를 곱셈표 내부 셀에 입력
2. 곱셈표_2
- Dim nr As Integer, nc As Integer '행번호/열번호를 입력할 변수 선언
- nr = Cells(Rows.Count, 2).End(xlUp).Row '표에 입력된 가장 마지막 행 번호 찾기
- nc = Cells(4, Columns.Count).End(xlToLeft).Column '표에 입력된 가장 마지막 열 번호 찾기
- Range(Cells(5, 3), Cells(nr, nc)).FormulaR1C1 = "=R4C*RC2" '표 내부 범위에 R1C1 셀 참조를 이용한 곱셈 결과 입력
위의 코드에서 `Range(Cells(5, 3), Cells(nr, nc)).FormulaR1C1 = "=R4C*RC2"` 부분을 살펴보면, 특정 범위 내의 모든 셀에 대해 R1C1 스타일로 수식을 설정하는 방법을 보여줍니다. `RC2`는 현재 열의 두 번째 행을 나타내며, `R4C`는 4번째 행의 현재 열을 나타냅니다.
3. R1C1 스타일 사용법
1. R1C1 셀 참조 설정 : R1C1 스타일을 사용하려면, 엑셀의 옵션을 변경해야 할 수 있습니다. "파일(F)" 메뉴에서 "옵션(O)"을 선택한 다음, "수식" 탭에서 "R1C1 참조 스타일 사용" 옵션을 선택합니다.

2. 셀 참조 표기 : R1C1 스타일의 셀 참조는 `RnCm` 형식으로 표기됩니다. 여기서 `n`은 행 번호를, `m`은 열 번호를 나타냅니다.
3. 상대적인 참조 사용 : R1C1 스타일에서는 상대적인 참조가 기본입니다. 따라서 수식 내에서 `R[1]C[-1]`과 같이 `[ ]` 안에 상대적인 이동 거리를 지정하여 셀 참조를 조정할 수 있습니다.
4. 특정 셀 범위 지정 : 코드에서 특정 범위에 R1C1 스타일을 적용하려면 `Range` 객체와 함께 사용합니다. 예를 들어, `Range("R2C1:R10C3")`은 2행 1열부터 10행 3열까지의 범위를 나타냅니다.
4. R1C1 사용법 예시
1. R1C3 : 첫번째 행, 세번째 열, 즉 "C1"셀을 나타냅니다.
2. R[1]C: 현재 행보다 1행 아래에 있는 셀을 나타냅니다.
3. R[-2]C: 현재 행보다 2행 위에 있는 셀을 나타냅니다.
4. R[1]C[3]: 현재 행보다 1행 아래에 있고 3열 오른쪽에 있는 셀을 나타냅니다.
5. R[-1]C[-1]: 현재 행의 1행 위에 있고 1열 왼쪽에 있는 셀을 나타냅니다.
'컴알못 > VBA' 카테고리의 다른 글
[VBA] 변수 타입과 범위 (0) | 2023.08.22 |
---|---|
[VBA] Function과 Subroutine (0) | 2023.08.22 |
[VBA] VBA에서 다른 파일의 모듈 실행하기(Application.Run) - 1 (0) | 2023.08.14 |
[VBA] 사용자 정의 함수 만들기 / Add-in으로 추가하기 (0) | 2023.08.14 |
[VBA] Option Explicit 사용 이유 (0) | 2023.08.14 |
[VBA] 자동 필터 (.AutoFilter) (0) | 2023.08.13 |
[VBA] 행 높이/열 너비 자동 조절 (.AutoFit) (0) | 2023.08.13 |
[VBA] 데이터가 입력된 마지막 행/열 찾기(.End) (0) | 2023.08.13 |