数式の入力方法 Formula

セルに数式を入力するには、Rangeオブジェクトに数式を文字列として入力します。

エクセルは「=」で始まる文字列は、数式として認識することになっています。

FormulaとValueプロパティ

  ■ コード内を「Wクリック」で選択できます。

Sub サンプル2535()

    Range("B2").Value = 30
    Range("B3").Value = 20
    Range("B4").Formula = "=B2+B3"
        
    Range("B6") = Range("B3")
    Range("B7") = "=B3"
    Range("B8") = Range("B4").Formula
    
    MsgBox Range("B6").Value & vbCrLf & Range("B6").Formula
    MsgBox Range("B7").Value & vbCrLf & Range("B7").Formula
    MsgBox Range("B8").Value & vbCrLf & Range("B8").Formula

End Sub

上のマクロを実行すると、次のようにデータが入ります。

それぞれのセルに表示される「数式バー」の中を見ると、次のようになっています。

セルB6の内容をMsgBoxに表示すると、Range(“B6”).Valueは「30」、Range(“B6”).Formulaも「30」で変わりません。

MsgBox Range("B6").Value & vbCrLf & Range("B6").Formula

セルB7の内容をMsgBoxに表示すると、Range(“B7”).Valueは「20」、Range(“B7”).Formulaは「=B3」で数式が入ります。
Valueは値が入り、Formulaは数式が入ります。

MsgBox Range("B7").Value & vbCrLf & Range("B7").Formula

セルB8の内容をMsgBoxに表示すると、Range(“B8”).Valueは「50」、Range(“B8”).Formulaは「=B2+B3」で数式が入ります。
Valueは値が入り、Formulaは数式が入ります。

MsgBox Range("B8").Value & vbCrLf & Range("B8").Formula

ValueやFormulaの省略
マクロではRangeオブジェクトのValueやFormulaは省略されることが多い。
マクロでは省略されても「=」のときは、数式と判断されます。

Formula のA1形式とR1C1形式

次のようなデータがあります。

  ■ コード内を「Wクリック」で選択できます。

Sub サンプル2540()

    Range("B2").Formula = "=D4"
    Range("B3").FormulaR1C1 = "=R6C5"
    
    'Formula を省略した場合
    'Range("B5") = "=D4"
    'Range("B6") = "=R6C5"

End Sub
“=D4″の表示方法を「A1形式」といいます。

Range("B2").Formula = "=D4"

“=R6C5″の表示方法を「R1C1形式」といいます。
「R1C1形式」では絶対値表示になります。「=$E$6」のように表示されます。

Range("B3").FormulaR1C1 = "=R6C5"

●マクロの実行結果

ワークシート関数

  ■ コード内を「Wクリック」で選択できます。

Sub サンプル2545()

    Range("D8").Formula = "=SUM(D2:D6)"
    Range("E8").Formula = "=SUM(E2:E6)"

End Sub
SUM関数などを使うことができる。

Range("D8").Formula = "=SUM(D2:D6)"

●マクロの実行結果

Val関数で文字列を数値に変換については次の記事が参考になります。
■関連記事■ Val関数で文字列を数値に変換する

以上で「数式の入力方法 Formula」の説明を終わります。