본문 바로가기
컴알못/VBA

[VBA] R1C1 참조 스타일

by 난프로 2023. 8. 21.

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 =To nr
    For j =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(53), 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(53), Cells(nr, nc)).FormulaR1C1 = "=R4C*RC2" '표 내부 범위에 R1C1 셀 참조를 이용한 곱셈 결과 입력

위의 코드에서 `Range(Cells(53), 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열 왼쪽에 있는 셀을 나타냅니다.