Excel VBA の FormulaR1C1 プロパティを使用すると、R1C1形式でセルに数式を設定できます。絶対参照を利用することで、特定のセルを固定的に参照する数式を簡単に設定できます。
FormulaR1C1 プロパティで絶対参照を扱う方法について解説します。
目次
R1C1形式における絶対参照の基本
R1C1形式で絶対参照を使用する場合、参照する行や列を数字のみで指定します。
たとえば:
| R1C1形式 | 説明 | A1形式換算 |
|---|---|---|
R1C1 | 絶対参照でセル A1 を指す | $A$1 |
R1C[1] | 現在の行で絶対参照の列を1つ右を指す | =$B1(行は固定されない) |
R[1]C1 | 現在のセルから1行下、絶対参照で列Aを指す | =$A2(列は固定される) |
R1C1形式の絶対参照は、行番号や列番号を数字だけで指定するのが特徴です。
絶対参照でセル A1 を使用
セル B1:B10 に =A1 * 2 という数式を設定します。ただし、A1 を絶対参照として固定します。
Sub AbsoluteReferenceExample()
Range("B1:B10").FormulaR1C1 = "=R1C1*2"
End Sub
解説
R1C1は、絶対参照でセルA1を指します。*2により、セルA1の値を2倍した結果が列Bに設定されます。
絶対参照と相対参照の組み合わせ
R1C1形式では、絶対参照と相対参照を組み合わせて設定することができます。
列を絶対参照して行を相対参照する
列 A を絶対参照し、行を相対参照する数式を設定します。
Sub MixedReferenceExample()
Dim lastRow As Long
lastRow = Cells(Rows.Count, "B").End(xlUp).Row
Range("C1:C" & lastRow).FormulaR1C1 = "=R[0]C1+R1C2"
End Sub
解説
R[0]C1は、現在のセルの行を参照し、列Aを絶対参照。R1C2は、絶対参照でセルB1を指します。
【VBA】行数を取得する方法:Rows.Countプロパティ
複数セルに絶対参照を適用する
絶対参照を使用して、複数のセルに同じ数式を設定する方法です。
絶対参照を使った割合計算
セル D1 に格納された固定値を使用して、列 A の各値の割合を列 B に計算します。
Sub AbsoluteReferenceForRange()
Dim lastRow As Long
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
' 絶対参照でセル D1 を参照
Range("B1:B" & lastRow).FormulaR1C1 = "=R[0]C[-1]/R1C4"
End Sub
解説
R1C4は、絶対参照でセルD1を指します。R[0]C[-1]は、現在のセルの行の列Aを参照します。
動的に絶対参照の数式を生成
特定のセル範囲や条件に基づいて動的に絶対参照の数式を設定する方法です。
条件付きで絶対参照を生成
絶対参照でセル A1 を使用し、条件に基づいて数式を設定します。
Sub DynamicAbsoluteReference()
Dim ws As Worksheet
Dim cell As Range
Set ws = ThisWorkbook.Worksheets("Sheet1")
For Each cell In ws.Range("B1:B10")
If cell.Value > 10 Then
cell.Offset(0, 1).FormulaR1C1 = "=R1C1+R[0]C[-1]"
End If
Next cell
End Sub
解説
- 値が 10 を超えるセルに対応する行の列
Cに数式を設定。 R1C1は、絶対参照でセルA1を指します。
R1C1形式の有効化
Excel のオプションで R1C1参照形式を有効化することもできますが、通常の A1形式のままでも FormulaR1C1 を使用できます。コードで一時的に形式を変更する場合は以下を使用します。
【R1C1形式を有効化】
Sub EnableR1C1()
Application.ReferenceStyle = xlR1C1
End Sub
【A1形式に戻す】
Sub EnableA1()
Application.ReferenceStyle = xlA1
End Sub
注意点とベストプラクティス
- 形式の違いを理解する
Formulaプロパティは A1形式、FormulaR1C1プロパティは R1C1形式を使用します。それぞれの用途を明確にすることが大切です。 - コードの可読性を考慮する
R1C1形式は慣れるまで読みづらい場合があります。コメントを追加するなどして意図を明確にすることをお勧めします。 - 動的参照を活用する
絶対参照と相対参照を組み合わせることで、動的な数式設定が可能になります。
まとめ
Excel VBA の FormulaR1C1 プロパティを使用すると、R1C1形式で絶対参照を含む数式を効率的に設定できます。以下のポイントを押さえて活用しましょう。
- 絶対参照の基本ルールを理解する
行と列を固定する方法を正確に把握する。 - 動的な数式設定に対応する
絶対参照を使うことで、動的な数式の設定が簡単になります。 - A1形式との違いを理解
必要に応じて A1形式と使い分ける。