セルに数式をセットする
ExcelVBAでセルに数式をセットするには、Formula または、FormulaR1C1 を使います。それぞれの使い方について解説します。
Formulaの使い方
Formulaの使い方は、
Range(“C5”).Formula = “=A5–A4“
などとA1,B2でセルを表現します。
実はこの書き方は、Valueでも同じに書けます。
Range(“C5”).Value = “=A5-A4”
また、Valueは省略できるため、
Range(“C5”) = “=A5-A4”
としても問題ありません。
ただ、値を数式を文字列などで受け取りたい場合は、両者に違いが出ます。
str = Range(“C5”).Value では計算結果が出力され、
str = Range(“C5”).Formula では、strの値は “=A5-A4″と数式が得られます。
FormulaR1C1の使い方
FormulaR1C1では、[ ] を使った場合は相対的な位置。数値だけの時は絶対的な位置を表現します。
Rは行(Row)、Cは列(Column)を指定します。
RC1とすれば、A列のR行目を指すことになり、RC[1]とすれば1つ右隣のR行目を指すことになります。
以下の図に位置関係のサンプルを示します。

絶対参照にした場合は$マークが付いて絶対参照であることを明示的に表現します。
表に対して逐次数式を入れていくような場面では相対的な表現を使うことが多いです。
この場合は、Cellsを使っても同じように書けます。
サンプルコード
Sub myFormulaR1C1()
Dim i As Long
For i = 1 To 5
Cells(i, "C").FormulaR1C1 = "=RC[-1]-RC[-2]"
Cells(i, "D") = "'" & Cells(i, "C").Formula
Next i
For i = 7 To 11
Cells(i, "C").FormulaR1C1 = "=RC[-1]-R7C1"
Cells(i, "D") = "'" & Cells(i, "C").Formula
Next i
End Sub
このコードを実行すると、以下のような結果が得られます。
