\ ポイント最大11倍! /

【VBA入門】Formulaの使い方まとめ【数式をマクロで扱う】

  • セルにVBAで関数を入れたい
  • 手動で数式を打ち込むのが面倒
  • VBAのFormulaとFormulaR1C1の違いを知りたい

今日は「VBAでセルに数式(Formula)を入れる方法」を解説します。

この記事を読めば、Formulaの使い方でつまずくことはゼロになります

結論:Formulaはこの形でOKです

Range("B2").Formula = "=SUM(A2:A10)"

✅ この一行で、B2セルに =SUM(A2:A10) をセットできます。

めっちゃ簡単ですよね。

基本の使い方(Formula)

Sub SetFormulaBasic()
    Range("C1").Formula = "=A1+B1"
End Sub

このコードを実行すると、C1セルに =A1+B1 という数式が入ります。
セル参照はA1形式で指定するのがポイント。

【応用①】変数を使って柔軟に

Sub SetFormulaWithVariable()
    Dim col As String
    col = "D"

    Range(col & "2").Formula = "=SUM(A2:C2)"
End Sub

このように、変数と組み合わせると動的な書き込みも可能です。

【応用②】FormulaR1C1との違いって?

Sub UseFormulaR1C1()
    Range("C1").FormulaR1C1 = "=R1C1+R1C2"
End Sub

A1形式じゃなくて、「行・列」で数式を記述したいときは FormulaR1C1 を使います。

✅ 目安:ずらした数式を一括で入れたいときは FormulaR1C1 が便利。

たとえば、下に向かって自動的に列をずらしたいときは以下です。

Sub FillDownFormula()
    Range("C2:C10").FormulaR1C1 = "=RC[-2]+RC[-1]"
End Sub

【応用③】数式を一括で入れる(範囲指定)

Sub InsertFormulaToRange()
    Range("D2:D100").Formula = "=A2+B2+C2"
End Sub

この書き方でも動きますが、相対参照になるため注意。
「全部の行でちゃんと動く?」という場合は、R1C1形式がおすすめ。

【応用④】ワークシート関数を使う(WorksheetFunctionとの違い)

Range("B1").Formula = "=VLOOKUP(A1, Sheet2!A:B, 2, FALSE)"

これは文字列として数式を入れる方法。

一方で、VBAで計算した結果を直接入れたい場合はこうです。

Range("B1").Value = Application.WorksheetFunction.VLookup("商品1", Sheets("Sheet2").Range("A:B"), 2, False)

Formula:Excelに計算させる
WorksheetFunction:VBA内で計算して結果だけ入れる

この違い、意外と重要です。

【補足】FormulaLocalを使うと関数が日本語でもOK

Range("C1").FormulaLocal = "=SUM(A1:A10)"

日本語環境で、英語関数がうまく動かないときはFormulaLocalで対応可能です。

まとめ:Formulaを使えばVBAの自動化が加速する

用途方法
基本の数式Formula
相対参照でずらしたいFormulaR1C1
日本語関数を使うFormulaLocal
結果だけ入れたいWorksheetFunction

おまけ:表の末尾に合計を入れるVBAマクロ

Sub AddTotalRow()
    Dim lastRow As Long
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    Range("B" & lastRow + 1).Formula = "=SUM(B2:B" & lastRow & ")"
End Sub

✅ 実務でもめっちゃ使えるやつです。覚えておいて損なし!

「VBAでちょっとした自動化をしたい…」という人は、まずFormulaから入るとスムーズです。

この記事が気に入ったら
フォローしてね!

シェア・記事の保存はこちら!

この記事を書いた人

CFXLOGのアバター CFXLOG プログラマ

メイン言語はPython。本ブログでは、実務や普段の学習で学んだことをアウトプットしています。
基本情報技術者試験合格者。

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)