Excel上級者

Excelマクロと関数の違いを初心者向けに解説【使い分けも説明】

しんたろ。

Excelを使っていると「マクロを使うと便利らしい」「でも関数との違いがわからない」という疑問にぶつかることがあります。さらに「VBAって何?マクロと同じ?」と混乱している方も多いのではないでしょうか。

Excelマクロと関数の違いを理解することは、Excel活用を一段階引き上げるための重要な第一歩です。この記事では、Excel初心者の方・ビジネスパーソンに向けて、マクロ・VBA・関数の違いをわかりやすく整理し、マクロと関数の使い分けの基準まで具体例つきで解説します。

この記事でわかること
  • Excel「関数」「マクロ」「VBA」それぞれの意味と役割の違い
  • マクロと関数の具体的な違い5つ(比較表あり)
  • 「関数とマクロ、どっちを使うべきか」の判断基準とフロー
  • 業務で使えるVBAマクロのコード例(データ整形・一括処理)
  • マクロ・VBAを始めるための最初の一歩
この操作、VBAで一瞬で自動化できます
まずは関数の使い方を解説し、最後にVBA自動化コードも紹介します
‘ マクロ(Sub)と関数(Function)の違いを実演
Sub マクロの例()
    Range(“A1”).Value = “Hello”
    Range(“A1”).Font.Bold = True
    MsgBox “セルに値を設定しました”
End Sub

Function 税込(price As Long) As Long
    税込 = price * 1.1
End Function
下のデモで実行結果を確認できます
📊 マクロと関数.xlsx – Excel
A
1 Hello
セルに値を設定しました
AB
1 金額税込金額
2 1,000 1,100
3 2,500 2,750
4 3,000 3,300
準備完了 100%
SubとFunctionの両方が実行されました!
☝ Subはセル操作、Functionは計算結果の返却に使い分けます
この記事の目次
  1. そもそも「マクロ」「VBA」「関数」とは何か?
  2. マクロと関数の具体的な違い5つ
  3. マクロと関数、どっちを使えばいい?使い分けの基準
  4. マクロを使った業務自動化の具体例
  5. マクロ・VBAを始めるには(初心者の第一歩)
  6. まとめ
  7. LINEでExcelを気軽に学べる
  8. SubとFunctionの違いをデモで確認
  9. よくある質問(FAQ)

そもそも「マクロ」「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)の使い分け判断フローチャート
関数とマクロの判断フロー

一目でわかる比較表

比較項目関数マクロ(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の「マクロの記録」機能を使えばマクロを作成できます。

  1. 「開発」タブをクリック(または「表示」タブ → マクロ)
  2. 「マクロの記録」をクリック
  3. 自動化したい操作を手動で実行する
  4. 「記録終了」をクリック

これだけで、行った操作が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の基礎を理解したら、ぜひ参考にしてください。

【VBA入門】SubとFunctionの違い|戻り値・呼び出し方法を徹底解説
【VBA入門】SubとFunctionの違い|戻り値・呼び出し方法を徹底解説

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

【2026年版】Excelでよく使う関数一覧|初心者が最初に覚えるべき関数を完全ガイド
【2026年版】Excelでよく使う関数一覧|初心者が最初に覚えるべき関数を完全ガイド
💻 操作を体験してみよう!

実際の操作手順をクリックして体験できます。各ステップをクリックしてみましょう。

📄 マクロ vs 関数 比較デモ
ワークシート関数の例
fx =IF(B2>=80,”合格”,”不合格”)
Sheet1 Sheet2
ABC
1氏名点数判定
2田中85合格
3佐藤62不合格
4鈴木91合格
関数の特徴
セルに直接入力し、値が変わると自動で再計算。「計算・取得・判定」が得意。
VBAエディタ(VBE)の例
Module1 (Code)
Sub 判定入力() Dim i As Long For i = 2 To 4 If Cells(i, 2).Value >= 80 Then Cells(i, 3).Value = “合格” Else Cells(i, 3).Value = “不合格” End If Next i End Sub
マクロ(VBA)の特徴
VBEにコードを記述し、実行ボタンで一括処理。「操作の自動化・繰り返し処理」が得意。
マクロ vs 関数 比較表
項目関数マクロ(VBA)
入力場所 セルに直接入力 VBEにコード記述
得意なこと 計算・取得・判定 操作の自動化・一括処理
実行タイミング 値変更時に自動再計算 ボタンクリックなどで手動実行
難易度 低 ~ 中 中 ~ 高
ファイル形式 .xlsx(標準) .xlsm(マクロ有効)
適用例 SUM, IF, VLOOKUP等 一括削除, シート統合
使い分けのポイント
計算・判定は関数、繰り返し処理・ファイル操作はマクロが最適。
タブをクリックして関数とマクロを切替えて比較
1 「関数」タブでワークシートでの使い方を確認
2 「マクロ」タブでVBEエディタでのコードを確認
3 「比較表」で5つの違いを整理して理解

まとめ

マクロ・VBA・関数の違いを3行で整理するとこうなります。

  • 関数 = セル内で計算・検索・取得をする機能。引数を受け取り値を返す
  • マクロ = Excelの操作を自動化する機能。手順を記録・実行する
  • VBA = マクロを記述するプログラミング言語。マクロの「中身」にあたる

使い分けの基本方針:

  1. 計算・検索・値の取得 → 関数を使う
  2. 書式変更・ファイル操作・繰り返し業務の自動化 → マクロ(VBA)を使う
  3. 「まず関数をマスターし、自動化が必要になったらVBAへ」の順で学ぶのがおすすめ

マクロ・VBAを本格的に学びたい方は、次のステップとして以下の記事をご覧ください。VBAの基本構文から実践的な使い方まで解説しています。

【VBA入門】SubとFunctionの違い|戻り値・呼び出し方法を徹底解説
【VBA入門】SubとFunctionの違い|戻り値・呼び出し方法を徹底解説

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

【2026年版】Excelでよく使う関数一覧|初心者が最初に覚えるべき関数を完全ガイド
【2026年版】Excelでよく使う関数一覧|初心者が最初に覚えるべき関数を完全ガイド
Excel業務の自動化
その手作業、自動化しませんか?

VBA開発・GAS連携・Webアプリ化まで、
業務に合わせた最適な自動化をご提案します。

1,600部ツール販売実績
15年製造業の業務経験
無料で相談する →
初回相談無料・お見積りだけでもOK
期間限定でChatGPT✖︎Googleスプレットシートのコンテンツ配布中!

LINEでExcelを気軽に学べる

しんたろ。
しんたろ。
Excel歴10年以上 → アプリ開発者
Profile
大手メーカーに15年以上勤務。製造部門で海外拠点の立ち上げ支援や、現場責任者として採算管理・納期管理・設備オペレートを経験。 2023年にDX人材育成プログラム第1期生として活動後、現在は製造現場のスケジュール運用を支えるアプリの企画・開発をメインに活動中。工程表示表作成の内製化SaaSを構築し、年間1,300万円のコスト改善を実現。 Excelによる業務改善で年間240時間の残業削減を達成した経験を活かし、ブログやSNSでも情報発信しています。
プロフィールを読む

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エディタで確認・編集することで、より柔軟なマクロに発展させることができます。

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ABOUT ME
しんたろ。
しんたろ。
Excel歴10年以上 → アプリ開発者
大手メーカーに15年以上勤務。製造部門で海外拠点の立ち上げ支援や、現場責任者として採算管理・納期管理・設備オペレートを経験。 2023年にDX人材育成プログラム第1期生として活動後、現在は製造現場のスケジュール運用を支えるアプリの企画・開発をメインに活動中。工程表示表作成の内製化SaaSを構築し、年間1,300万円のコスト改善を実現。 Excelによる業務改善で年間240時間の残業削減を達成した経験を活かし、ブログやSNSでも情報発信しています。
記事URLをコピーしました