
ExcelVBA シートに 自動的に計算式(関数)を埋め込む ことで、手作業を減らし、効率化・ミス防止につながります。使い方や注意点など、サンプルコードをもとに具体的に解説します。
2025年の目標は繰り返し作業に悩まされない年にしませんか? Excel VBAを活用した効率化がその第一歩
本サイト参考:Excel VBAで自動化するコードのベースを習得したい方におすすめの記事
目次
Excel VBA 自動的に計算式(関数)を埋め込む|シーン
以下のシーンで利用します。
1.売上集計シートで合計や平均を自動設定
2.価格表に税率を考慮した計算を自動挿入
3.動的なデータ範囲に対して計算式を適用
Excel VBA 自動的に計算式(関数)を埋め込む|サンプルコード
Excel VBAで効率化の準備をしてみませんか?2025年をよりスムーズに過ごすための資格
基本的な文法やVBAの実践的な応用までを網羅的に学習できる方法は、ExcelVBAエキスパート資格の取得を目指すこと。学習を通して、より効率的に、着実に基礎を身につけることが可能です。資格取得すれば、スキルの証明にもなり、職場での評価アップにも繋がるため、勉強を進めるモチベーションにもなります。
本サイト参考:マクロ知識がないから「何から学べば良いのかわからない」という人におすすめの記事
計算式の埋め込み方法
方法 | 説明 |
.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の関数も適用可能
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)"** を指す
複数行に一括で計算式を適用
標準モジュール
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` という数式が自動的に入る。
最終行まで動的に計算式を適用
標準モジュール
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列の最終行を取得
データの長さに応じて数式を適用 できるので、手動で範囲を指定する必要がない。
計算結果を値として貼り付け
標準モジュール
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 を使うと 計算結果だけを残せる。
数式を消しても、計算結果は維持される。
・ Formula は A1形式、 FormulaR1C1 は R1C1形式 を使用
・ 数式を直接入力する場合、Excelで正しく動くか確認 してからVBAに組み込む。
・ 数式を保持したい場合は、元データを別シートにコピーするなどの対策が必要
Excel VBA 自動的に計算式(関数)を埋め込む|まとめ
・数式を埋め込むには .Formula (A1形式)と .FormulaR1C1 (R1C1形式)を使う。
・複数行への一括適用も可能(Rangeオブジェクトを活用)
・最終行まで自動適用する場合は End(xlUp).Row を使う。
・計算後に数式を削除し、値だけを残す場合は .Value = .Value を活用
Excel VBAで自動化するコードのベースを習得したい方におすすめ!
VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。
ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。
ExcelVBAエキスパートスタンダード
ExcelVBAの開発を仕事にする人が対象の問題集です。
Excel VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。