VBAで自動化 VBA一覧 セル・値の取得と貼り付け 値渡し・参照

【VBA】FormulaR1C1 プロパティで絶対参照を行う方法

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

注意点とベストプラクティス

  1. 形式の違いを理解する
    Formula プロパティは A1形式、FormulaR1C1 プロパティは R1C1形式を使用します。それぞれの用途を明確にすることが大切です。
  2. コードの可読性を考慮する
    R1C1形式は慣れるまで読みづらい場合があります。コメントを追加するなどして意図を明確にすることをお勧めします。
  3. 動的参照を活用する
    絶対参照と相対参照を組み合わせることで、動的な数式設定が可能になります。

まとめ

Excel VBA の FormulaR1C1 プロパティを使用すると、R1C1形式で絶対参照を含む数式を効率的に設定できます。以下のポイントを押さえて活用しましょう。

  1. 絶対参照の基本ルールを理解する
    行と列を固定する方法を正確に把握する。
  2. 動的な数式設定に対応する
    絶対参照を使うことで、動的な数式の設定が簡単になります。
  3. A1形式との違いを理解
    必要に応じて A1形式と使い分ける。

    -VBAで自動化, VBA一覧, セル・値の取得と貼り付け, 値渡し・参照