セルに式を書き込む
通常、Excelマクロ上で計算し、結果をセルに書き込むのが一般的だと思いますが、Excelの式に任せた方が良いケースがあります。
例えば下記のように合計値・平均などの計算結果は、Excelマクロで処理した結果を書き込むと、途中の値を手で変更した場合に計算結果と一致しなくなります。
そういう場合は、計算結果を書き込むのではなく、計算式を書き込む方が望ましいです。
計算式を書き込む方法は2通りあり、セルの参照を相対値で設定する場合と絶対値で設定する場合があります。
上記四角で囲んだB列の合計を式で書き込む例を、相対値・絶対値で書くと下記となります。
▽相対値(FormulaR1C1)
'セルB12に、B2~B11までの合計を集計
AppExcel.Cells(12, 2).FormulaR1C1 = "=sum(R[-10]C:R[-1]C)"
AppExcel.Cells(12, 2).FormulaR1C1 = "=sum(R[-10]C:R[-1]C)"
▽絶対値(Formula)
'セルB12に、B2~B11までの合計を集計
AppExcel.Cells(12, 2).Formula = "=sum(B2:B11)"
AppExcel.Cells(12, 2).Formula = "=sum(B2:B11)"
絶対値の場合、セルを「B2」「B11」のように指定すると汎用性が失われてしまうので、下記のようにコーディングすると良いと思います。
'開始位置のセルのアドレスを取得(「$B$2」を取得)
x = AppExcel.Cells(2, 2).Address
'終了位置のセルのアドレスを取得(「$B$11」を取得)
y = AppExcel.Cells(2, 11).Address
'セルB12に、B2~B11までの合計を集計
AppExcel.Cells(2, 12).Formula = "=sum(" & x & ":" & y & ")"
x = AppExcel.Cells(2, 2).Address
'終了位置のセルのアドレスを取得(「$B$11」を取得)
y = AppExcel.Cells(2, 11).Address
'セルB12に、B2~B11までの合計を集計
AppExcel.Cells(2, 12).Formula = "=sum(" & x & ":" & y & ")"