Excelマクロと関数の違いを初心者向けに解説【使い分けも説明】
Excelを使っていると「マクロを使うと便利らしい」「でも関数との違いがわからない」という疑問にぶつかることがあります。さらに「VBAって何?マクロと同じ?」と混乱している方も多いのではないでしょうか。
Excelマクロと関数の違いを理解することは、Excel活用を一段階引き上げるための重要な第一歩です。この記事では、Excel初心者の方・ビジネスパーソンに向けて、マクロ・VBA・関数の違いをわかりやすく整理し、マクロと関数の使い分けの基準まで具体例つきで解説します。
- Excel「関数」「マクロ」「VBA」それぞれの意味と役割の違い
- マクロと関数の具体的な違い5つ(比較表あり)
- 「関数とマクロ、どっちを使うべきか」の判断基準とフロー
- 業務で使えるVBAマクロのコード例(データ整形・一括処理)
- マクロ・VBAを始めるための最初の一歩
Sub マクロの例()
Range(“A1”).Value = “Hello”
Range(“A1”).Font.Bold = True
MsgBox “セルに値を設定しました”
End Sub
Function 税込(price As Long) As Long
税込 = price * 1.1
End Function
| A | |
|---|---|
| 1 | Hello |
| A | B | |
|---|---|---|
| 1 | 金額 | 税込金額 |
| 2 | 1,000 | 1,100 |
| 3 | 2,500 | 2,750 |
| 4 | 3,000 | 3,300 |
☝ Subはセル操作、Functionは計算結果の返却に使い分けます
そもそも「マクロ」「VBA」「関数」とは何か?
Excelには似たような用語が並んでいますが、それぞれ役割がまったく異なります。まずは3つの言葉の意味を整理しましょう。
Excel関数とは(計算・取得に特化した機能)
Excel関数とは、セル内でデータの計算・検索・取得を行うための機能です。
=SUM(A1:A10)のように、セルに数式を入力するだけで結果が返ってきます- 引数(カッコ内の値)を受け取り、必ず何らかの値を返すのが特徴です
- プログラミングの知識は不要で、関数名と引数のルールを覚えれば誰でも使えます
代表的な関数の例:
| 関数名 | 用途 |
|---|---|
| SUM | 合計を求める |
| VLOOKUP | 表から値を検索・取得する |
| IF | 条件によって結果を分岐する |
| COUNTIFS | 複数条件に合うセルをカウントする |
| IFERROR | エラーを別の値に置き換える |
Excelマクロとは(操作を自動化する機能)
マクロとは、Excelの操作手順を記録・実行して自動化するための機能です。
関数が「計算して値を返す」のに対し、マクロは「Excelそのものを操作する」イメージです。たとえば「毎月の売上データを特定の書式に整えて印刷する」という一連の作業を、ボタン1つで実行できるようにするのがマクロです。
- セルの書式変更・色付け・行の追加・削除
- ファイルの開閉・保存・印刷
- 他のアプリ(WordやOutlook)との連携
これらは関数では対応できない操作ですが、マクロなら自動化できます。
VBAとマクロの関係(混同しやすいポイント)
「VBA」と「マクロ」は混同されやすいですが、正確には異なります。
- マクロ = Excelの「自動化機能」の総称
- VBA(Visual Basic for Applications) = マクロを記述するプログラミング言語
つまり「VBAというプログラミング言語でコードを書く → それがマクロとして動作する」という関係です。
VBA(言語)でコードを書く
↓
マクロ(機能)として実行される「マクロを作る=VBAを書く」とほぼ同義に使われる場面も多く、実務上は区別しなくても問題ありません。ただし正確には上記の関係を押さえておくと理解が深まります。
マクロと関数の具体的な違い5つ
マクロと関数は「どちらもExcelを便利にするもの」ですが、特性は大きく異なります。以下の比較表と解説で整理しましょう。
一目でわかる比較表
| 比較項目 | 関数 | マクロ(VBA) |
|---|---|---|
| 主な用途 | 計算・データ検索・取得 | Excelの操作自動化 |
| 値の返し方 | 必ず値を返す(セルに表示) | 値を返さなくてよい(処理の実行が目的) |
| 実行タイミング | セルに入力すれば常時自動計算 | ボタン・ショートカット・特定の条件で実行 |
| 対応できる操作 | 計算・文字列操作・検索のみ | 書式変更・ファイル操作・印刷・外部連携など幅広い |
| 習得難易度 | 低〜中(関数名と引数を覚えれば使える) | 中〜高(VBAのコードを書く必要がある) |
| ファイル形式 | 通常の.xlsxで動作 | マクロ有効ブック(.xlsm)が必要 |
| メンテナンス性 | 複雑な数式は修正しにくい | コメントを入れれば引き継ぎやすい |
違い1. できることの範囲
関数は「計算・検索・文字列操作」に特化しています。一方、マクロはExcel全体の操作を自動化できます。
- 関数でできること: 合計、平均、条件分岐、データ検索、文字列の加工など
- マクロでできること: セルの書式変更、シートの追加・削除、ファイルの開閉、印刷、メール送信、他アプリ(Word・Outlookなど)との連携
「Excelの計算結果がほしい」なら関数、「Excelを使った一連の作業を自動化したい」ならマクロ、という棲み分けです。
違い2. 値の返し方
関数は必ずセルに何らかの結果(値)を返します。=IF(A1>100,"合格","不合格") と入力すれば、セルに「合格」または「不合格」が表示されます。
マクロは「処理を実行すること」が目的のため、値を返さなくても構いません。たとえば「A列のデータを並び替えて保存する」という処理を実行するだけで完結します。
違い3. 実行のタイミング
- 関数: セルに入力した瞬間から、データが変わるたびに自動で再計算されます
- マクロ: ボタンのクリック、ショートカットキー、ファイルを開いたとき、特定の時刻など、設定したタイミングで実行します
関数は「常時働き続ける」、マクロは「呼ばれたときに動く」イメージです。
違い4. 習得の難しさ
関数は関数名と引数の書き方を覚えれば使えるため、プログラミング経験がない方でも比較的早く習得できます。
マクロ(VBA)は、プログラミング言語のルールを理解する必要があります。ただし「マクロの記録」機能を使えばコードを書かずにマクロを作ることも可能です(後述)。
違い5. ファイルの取り扱い
マクロを含むExcelファイルは、通常の .xlsx 形式では保存できません。マクロ有効ブック(.xlsm) として保存する必要があります。ファイルを共有する際はこの点に注意が必要です。また、受け取った側がマクロを有効化する設定をしていないと動作しない場合があります。
マクロと関数、どっちを使えばいい?使い分けの基準
「マクロと関数の違いはわかった。でも実際にどちらを使えばいいのか」という疑問に答えます。
関数を使うべきケース
以下のような場合は関数で対応するのが適切です。
- 合計・平均・最大値などの単純な計算・集計
- VLOOKUP・IFなど、関数の組み合わせで完結する処理
- 他の担当者がメンテナンスしやすい環境が必要な場合
- データが変わるたびにリアルタイムで結果を反映させたい場合
関数は修正・確認が容易で、共有しやすいのが強みです。「関数で解決できるならまず関数を使う」が基本方針です。
マクロ(VBA)を使うべきケース
以下のような操作は関数では対応できないため、マクロが必要です。
- セルの書式変更・色付け・フォントサイズ変更
- 複数ファイルをまたいだ処理(ファイルの統合・分割)
- 定型業務の完全自動化(納品書の発行・印刷・メール送信)
- 繰り返し作業を1クリックで完了させたい場合
- 大量データの一括処理(数千〜数万行の整形・集計)
判断フロー(初心者向け)
迷ったときは以下のフローで判断してください。
やりたいことを明確にする
↓
「計算・検索・値の取得」だけで完結するか?
├─ YES → 関数を使う
└─ NO → 続けて確認
↓
「書式変更・ファイル操作・印刷など
Excelの操作を自動化したいか?」
├─ YES → マクロ(VBA)を使う
└─ 繰り返し作業を自動化したい → マクロ(VBA)を使うまとめると:
| やりたいこと | 使うべきもの |
|---|---|
| 売上の合計・平均を出したい | 関数(SUM・AVERAGE) |
| 条件によって表示内容を変えたい | 関数(IF・IFS) |
| 別の表から値を引っ張ってきたい | 関数(VLOOKUP・XLOOKUP) |
| セルに色を付けたい | マクロ(VBA) |
| 毎月のレポートを自動作成・印刷したい | マクロ(VBA) |
| 複数のファイルのデータを1つにまとめたい | マクロ(VBA) |
| 入力フォームから自動でメールを送りたい | マクロ(VBA) |
マクロを使った業務自動化の具体例
マクロで何ができるかを、実務でよく使われるコード例とともに紹介します。
例1. データの自動整形(不要な空白行の一括削除)
「データをコピーしてくると空白行が混じってしまう」という場面はよくあります。以下のマクロで一括削除できます。
Sub DeleteBlankRows()
Dim i As Long
Dim lastRow As Long
' 最終行を取得
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
' 下から上に向かって空白行を削除(上から削除すると行番号がずれるため)
For i = lastRow To 1 Step -1
If Cells(i, 1).Value = "" Then
Rows(i).Delete
End If
Next i
MsgBox "空白行の削除が完了しました。"
End Subポイント: 上から削除すると行番号がずれてしまうため、下から上に向かって処理します。これは初心者がよくはまるポイントです。
例2. 条件に合う行を別シートに自動コピー
「A列が”完了”になっているデータだけ、別シートに抽出したい」という処理です。
Sub CopyCompletedRows()
Dim wsSource As Worksheet
Dim wsDest As Worksheet
Dim i As Long
Dim destRow As Long
Dim lastRow As Long
' シートを指定
Set wsSource = Sheets("データ")
Set wsDest = Sheets("完了済み")
' コピー先シートをクリア(ヘッダー行は残す)
wsDest.Rows("2:" & wsDest.Rows.Count).ClearContents
lastRow = wsSource.Cells(Rows.Count, 1).End(xlUp).Row
destRow = 2 ' コピー先の開始行
For i = 2 To lastRow
If wsSource.Cells(i, 1).Value = "完了" Then
wsSource.Rows(i).Copy Destination:=wsDest.Rows(destRow)
destRow = destRow + 1
End If
Next i
MsgBox destRow - 2 & "件のデータをコピーしました。"
End Sub例3. 複数シートのデータを1シートに統合
月ごとにシートが分かれている売上データを、1枚のシートに統合するマクロです。
Sub MergeSheets()
Dim ws As Worksheet
Dim wsMaster As Worksheet
Dim lastRow As Long
Dim masterLastRow As Long
' 集計先シートを指定(なければ新規作成)
On Error Resume Next
Set wsMaster = Sheets("集計")
On Error GoTo 0
If wsMaster Is Nothing Then
Set wsMaster = Sheets.Add(After:=Sheets(Sheets.Count))
wsMaster.Name = "集計"
Else
wsMaster.Cells.ClearContents
End If
masterLastRow = 1
' 「集計」シート以外の全シートのデータをコピー
For Each ws In Worksheets
If ws.Name <> "集計" Then
lastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row
If lastRow >= 1 Then
ws.Range("A1:Z" & lastRow).Copy _
Destination:=wsMaster.Cells(masterLastRow, 1)
masterLastRow = masterLastRow + lastRow
End If
End If
Next ws
MsgBox "全シートのデータを「集計」シートに統合しました。"
End SubこれらのコードはExcelのVBAエディタに貼り付けるだけで動作します。コードの意味がわからなくても、まずは動かしてみることが上達への近道です。
マクロ・VBAを始めるには(初心者の第一歩)
「マクロに興味はあるけど、どこから始めればいいかわからない」という方向けに、最初の一歩を紹介します。
ステップ1:「マクロの記録」機能でコードなしに試してみる
VBAのコードを書かなくても、Excelの「マクロの記録」機能を使えばマクロを作成できます。
- 「開発」タブをクリック(または「表示」タブ → マクロ)
- 「マクロの記録」をクリック
- 自動化したい操作を手動で実行する
- 「記録終了」をクリック
これだけで、行った操作がVBAコードとして記録されます。記録されたコードを見ることで、VBAの書き方を学ぶこともできます。
「開発」タブが表示されていない場合:「ファイル」→「オプション」→「リボンのユーザー設定」→「開発」にチェックを入れてください。
ステップ2:VBAエディタを開く
VBAのコードを確認・編集するには「VBAエディタ(Visual Basic Editor)」を開きます。
- Windowsの場合:
Alt + F11キーを押す - Macの場合:
Option + F11キーを押す
または「開発」タブ → 「Visual Basic」からも開けます。
ステップ3:学習ロードマップ
マクロ・VBAを習得するには、以下の順番で学ぶのがおすすめです。
1. Excel関数を使いこなす(SUM、IF、VLOOKUPなど)
↓
2. 「マクロの記録」で操作を自動化してみる
↓
3. 記録されたVBAコードを読んで理解する
↓
4. VBAの基本構文を学ぶ(変数・繰り返し・条件分岐)
↓
5. 自分の業務に合わせたマクロを作れるようになる「まず関数を使いこなし、自動化が必要になったらマクロ・VBAへ」というステップが自然な学習の流れです。
VBAのより詳しい構文については、以下の記事で解説しています。マクロとVBAの基礎を理解したら、ぜひ参考にしてください。

また、Excelの関数全体を体系的に学びたい方は、以下の記事もあわせてご覧ください。

実際の操作手順をクリックして体験できます。各ステップをクリックしてみましょう。
| A | B | C | |
|---|---|---|---|
| 1 | 氏名 | 点数 | 判定 |
| 2 | 田中 | 85 | 合格 |
| 3 | 佐藤 | 62 | 不合格 |
| 4 | 鈴木 | 91 | 合格 |
| 項目 | 関数 | マクロ(VBA) |
|---|---|---|
| 入力場所 | セルに直接入力 | VBEにコード記述 |
| 得意なこと | 計算・取得・判定 | 操作の自動化・一括処理 |
| 実行タイミング | 値変更時に自動再計算 | ボタンクリックなどで手動実行 |
| 難易度 | 低 ~ 中 | 中 ~ 高 |
| ファイル形式 | .xlsx(標準) | .xlsm(マクロ有効) |
| 適用例 | SUM, IF, VLOOKUP等 | 一括削除, シート統合 |
まとめ
マクロ・VBA・関数の違いを3行で整理するとこうなります。
- 関数 = セル内で計算・検索・取得をする機能。引数を受け取り値を返す
- マクロ = Excelの操作を自動化する機能。手順を記録・実行する
- VBA = マクロを記述するプログラミング言語。マクロの「中身」にあたる
使い分けの基本方針:
- 計算・検索・値の取得 → 関数を使う
- 書式変更・ファイル操作・繰り返し業務の自動化 → マクロ(VBA)を使う
- 「まず関数をマスターし、自動化が必要になったらVBAへ」の順で学ぶのがおすすめ
マクロ・VBAを本格的に学びたい方は、次のステップとして以下の記事をご覧ください。VBAの基本構文から実践的な使い方まで解説しています。

Excelの関数全体を網羅的に学びたい方は、以下の記事もあわせてチェックしてみてください。

VBA開発・GAS連携・Webアプリ化まで、
業務に合わせた最適な自動化をご提案します。
LINEでExcelを気軽に学べる
SubとFunctionの違いをデモで確認
Sub(マクロ)とFunction(関数)の実行結果の違いを、下のインタラクティブデモで確認できます。
VBAマクロの実行結果は記事冒頭のインタラクティブデモで確認できます。ボタンを押すとアニメーションで動作をシミュレーションします。
よくある質問(FAQ)
Q1. 関数を覚えていたらマクロは不要ですか?
関数だけで解決できる作業は多くありますが、「書式変更」「ファイル操作」「印刷の自動化」「複数ファイルをまたいだ処理」など、関数では対応できない操作も存在します。日常的な計算・集計は関数で十分ですが、定型業務の自動化や繰り返し作業の効率化を目指すなら、マクロ(VBA)を学ぶ価値があります。
Q2. VBAを学ぶのは難しいですか?
プログラミング未経験者には最初のハードルを感じるかもしれませんが、Excelの「マクロの記録」機能を使えばコードを書かずに始めることができます。また、VBAはPythonやJavaScriptと比べてシンプルな文法なので、Excel操作に慣れている方なら比較的スムーズに習得できます。まずは「マクロの記録」で動くものを作り、コードを少しずつ読み解いていくのが効果的な学習法です。
Q3. マクロを使うとファイルが重くなりますか?
マクロ自体はファイルサイズをほとんど増加させません。ただし、マクロの処理内容によっては実行時間がかかる場合があります。逆に、大量の関数(特にVLOOKUPやSUMIFなどの重い関数)をセルに大量入力しているよりも、マクロで処理した方がExcelの動作が軽くなるケースもあります。
Q4. マクロはセキュリティ上の問題がありますか?
マクロ(VBA)は悪用されるとウイルスになる可能性があるため、Excelはデフォルトでマクロを無効化しています。信頼できる送付元から受け取ったファイル以外のマクロは有効化しないよう注意が必要です。自分で作成したマクロや社内で管理されているマクロであれば、通常は問題ありません。マクロを含むファイルは .xlsm 形式で保存され、開いたときに「マクロを有効にする」の確認が表示されます。
Q5. 「マクロの記録」で作ったマクロとVBAで書いたマクロの違いは何ですか?
どちらも同じVBAコードとして保存されます。「マクロの記録」は手動操作をそのままコードに変換するため、シンプルな操作には向いています。一方、繰り返し(ループ)処理や条件分岐が必要な複雑な処理は、VBAを直接書く必要があります。「マクロの記録」で作ったコードをVBAエディタで確認・編集することで、より柔軟なマクロに発展させることができます。
