オブジェクトRange プロパティFormula

Range

Range.Formula プロパティの概要

Formula プロパティは、指定されたセルまたはセル範囲に対して数式(formula)を設定・取得するためのプロパティです。Excelで直接セルに入力するような文字列形式の数式を、VBAから操作できるという特徴があります。


◆ 基本的な使い方

● 数式の設定(代入)

Range("A1").Formula = "=SUM(B1:B10)"

このコードは、セルA1に =SUM(B1:B10) という数式を挿入します。

● 数式の取得(読み取り)

Dim f As String
f = Range("A1").Formula
MsgBox "A1の数式は " & f

このコードで、A1に設定されている数式の内容を取得し、メッセージボックスで表示します。


FormulaFormulaR1C1 の違い

プロパティ説明
Formula通常の「A1形式」の参照で数式を扱う
FormulaR1C1「R1C1形式」で数式を扱う

● 例:

Range("A2").Formula = "=B2+C2"           ' A1形式
Range("A2").FormulaR1C1 = "=RC[1]+RC[2]" ' R1C1形式(同じ意味)

R1C1形式相対参照や動的な式の組み立てに便利です。


◆ 数式の一括設定

複数のセルに同じ数式を一括設定することも可能です。

Range("C2:C10").Formula = "=A2+B2"

ただしこの方法では、先頭セルにだけ正しく設定され、他のセルには同じ文字列が入ってしまう可能性があります。自動的な行番号の調整をしたい場合は、R1C1形式を使うと確実です。

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

◆ 数式を動的に構築する

数式の内容を変数で組み立てることで、より柔軟な数式挿入が可能になります。

● 例:動的な合計対象範囲の作成

Dim lastRow As Long
lastRow = Cells(Rows.Count, 2).End(xlUp).Row

Range("C1").Formula = "=SUM(B1:B" & lastRow & ")"

このようにすれば、データの最終行までを対象とする数式が生成できます。


◆ 数式を含むセルの確認・取得

ある範囲内で、数式が含まれているセルだけを抽出するには、以下のようなコードを使います。

Dim cell As Range
For Each cell In Range("A1:A10")
If cell.HasFormula Then
Debug.Print cell.Address & ": " & cell.Formula
End If
Next cell

FormulaLocal プロパティとの違い

  • Formula は英語式(例: =SUM(A1:A10)
  • FormulaLocal は日本語式(例: =合計(A1:A10)

● 日本語版Excelでローカル関数を使いたい場合

Range("A1").FormulaLocal = "=合計(B1:B10)"

ただし、FormulaLocal多言語対応が難しいため、基本的には Formula を使うのが推奨です。


◆ 応用テクニック

1. 式の変更検出

ワークシート関数で使っていた式をVBAから動的に変更可能です。

If Range("A1").Formula = "=SUM(B1:B10)" Then
Range("A1").Formula = "=AVERAGE(B1:B10)"
End If

2. 入力規則やチェックとの併用

数式を自動挿入してから、入力チェックや検証を行うことも可能です。

If Range("A1").HasFormula Then
If InStr(1, Range("A1").Formula, "SUM") > 0 Then
MsgBox "A1にはSUM関数が使われています。"
End If
End If

3. 数式付きテンプレートの複製

数式のあるテンプレート行をコピーし、別の行へ数式付きで複製することもできます。

Rows(2).Copy
Rows(3).PasteSpecial xlPasteFormulas

◆ よくあるエラーと対処法

エラー内容原因と対処法
アプリケーション定義またはオブジェクト定義のエラー数式文字列が不正、またはセルが不適切
数式が入らず文字列になる先頭に「'(アポストロフィ)が入っている
数式が一部のセルでずれるR1C1形式を使わないと相対参照が壊れる

◆ まとめ

Formula プロパティは、VBAからセルに数式を設定・取得するための非常に重要な手段です。基本的な用途から応用的なテクニックまで、以下のような形で活用できます。

活用場面方法例
単一セルへの数式挿入Range("A1").Formula = "=A2+B2"
複数セルへの応用Range("C2:C10").FormulaR1C1 = "=RC[-2]+RC[-1]"
数式の取得f = Range("A1").Formula
条件分岐If cell.HasFormula Then ...
多言語対応英語版:Formula、日本語版:FormulaLocal
タイトルとURLをコピーしました