
ExcelVBA シートに 自動的に計算式(関数)を埋め込む ことで、手作業を減らし、効率化・ミス防止につながります。使い方や注意点など、サンプルコードをもとに具体的に解説します。
📌 「これ、自動化できたらラクなのに…」と思ったこと、ありませんか?
実はその作業、Excelマクロで簡単に自動化できるかもしれません。
「でもマクロって難しそう…」という方のために、完全初心者向けの入門記事をご用意しました!
👇実務で“そのまま使える”テンプレ付きで、コピペするだけ!
初心者向けエクセルマクロの作り方を解説|コピペOK実務テンプレ付き
目次
Excel VBA 自動的に計算式(関数)を埋め込む|シーン
以下のシーンで利用します。
1.売上集計シートで合計や平均を自動設定
2.価格表に税率を考慮した計算を自動挿入
3.動的なデータ範囲に対して計算式を適用
Excel VBA 自動的に計算式(関数)を埋め込む|サンプルコード
計算式の埋め込み方法
方法 | 説明 |
.Formula | 数式をA1形式で設定(標準) |
.FormulaR1C1 | 数式をR1C1形式で設定(相対参照向き) |
基本的な計算式の埋め込み
標準モジュール
Option Explicit
Sub 計算式を埋め込む_基本()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
' B2セルに A2 + A3 の計算式を入れる
ws.Range("B2").Formula = "=A2+A3"
' C2セルに SUM(A2:A10) の計算式を入れる
ws.Range("C2").Formula = "=SUM(A2:A10)"
' D2セルに A2 * 1.1 (税率計算) を入れる
ws.Range("D2").Formula = "=A2*1.1"
End Sub
.Formula を使うと、通常のExcelの数式(A1形式) をそのまま記述できる。
=SUM(A2:A10) のように、Excelの関数も適用可能
自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。
R1C1形式を使った計算式の埋め込み
標準モジュール
Option Explicit
Sub 計算式を埋め込む_R1C1()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
' B2セルに A2 + A3 の計算式をR1C1形式で入れる
ws.Range("B2").FormulaR1C1 = "=R2C1+R3C1"
' C2セルに SUM(A2:A10) の計算式をR1C1形式で入れる
ws.Range("C2").FormulaR1C1 = "=SUM(R2C1:R10C1)"
' D2セルに A2 * 1.1 (税率計算) をR1C1形式で入れる
ws.Range("D2").FormulaR1C1 = "=R2C1*1.1"
End Sub
.FormulaR1C1 を使うと、行・列番号を使ったR1C1形式で数式を指定できる。
R2C1 は **"2行1列目のセル(A2)"** を指す
自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。
複数行に一括で計算式を適用
標準モジュール
Option Explicit
Sub 計算式を一括適用()
Dim ws As Worksheet
Dim rng As Range
Set ws = ThisWorkbook.Sheets("Sheet1")
Set rng = ws.Range("B2:B10") ' B2~B10 に計算式を設定
' 各行で "A列の値 × 1.1" を計算
rng.Formula = "=A2*1.1"
End Sub
B2:B10 の範囲に まとめて数式を埋め込む。
=A2*1.1 を適用すると、B3には `=A3*1.1` という数式が自動的に入る。
自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。
最終行まで動的に計算式を適用
標準モジュール
Option Explicit
Sub 最終行まで計算式を埋め込む()
Dim ws As Worksheet
Dim lastRow As Long
Set ws = ThisWorkbook.Sheets("Sheet1")
' A列の最終行を取得
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' B2~B(最終行) に "A列の値 × 1.1" の数式を設定
ws.Range("B2:B" & lastRow).Formula = "=A2*1.1"
End Sub
Cells(Rows.Count, "A").End(xlUp).Row で A列の最終行を取得
データの長さに応じて数式を適用 できるので、手動で範囲を指定する必要がない。
自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。
計算結果を値として貼り付け
標準モジュール
Option Explicit
Sub 計算結果を値として貼り付け()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
' B2~B10に数式を設定
ws.Range("B2:B10").Formula = "=A2*1.1"
' 数式を値に変換
ws.Range("B2:B10").Value = ws.Range("B2:B10").Value
End Sub
.Value = .Value を使うと 計算結果だけを残せる。
数式を消しても、計算結果は維持される。
自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。
・ Formula は A1形式、 FormulaR1C1 は R1C1形式 を使用
・ 数式を直接入力する場合、Excelで正しく動くか確認 してからVBAに組み込む。
・ 数式を保持したい場合は、元データを別シートにコピーするなどの対策が必要
Excel VBA 自動的に計算式(関数)を埋め込む|まとめ
・数式を埋め込むには .Formula (A1形式)と .FormulaR1C1 (R1C1形式)を使う。
・複数行への一括適用も可能(Rangeオブジェクトを活用)
・最終行まで自動適用する場合は End(xlUp).Row を使う。
・計算後に数式を削除し、値だけを残す場合は .Value = .Value を活用
「Excel VBAで自動化するコードのベースが習得できる解説書」
Excel VBAエキスパートベーシックとスタンダード、どちらを選べばいいか判断が難しい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集を用意しました。