【誰でもできる】Excelマクロとは?基本の作り方・実践的な作成例を解説

ダウンロード: Excelの無料基礎ガイド
水落 絵理香(みずおち えりか)
水落 絵理香(みずおち えりか)

最終更新日:

公開日:

集計や分析作業に優れているExcelですが、データの量が増えていくごとに手間と時間がかかると感じている方も多いのではないでしょうか。

【誰でもできる】Excelマクロとは?基本の作り方・実践的な作成例を解説

【初心者向け】Excelでの表作成や関数が学べる基礎ガイド

基本的な操作方法から、表やグラフ、利用頻度の高い関数の活用方法を初心者でもわかりやすいよう解説。

  • シートの操作方法
  • 関数の使い方
  • ピボットテーブルの活用方法
  • 実践用Excelテンプレート
詳しく見る

    今すぐダウンロードする

    全てのフィールドが必須です。

    ダウンロードの準備ができました

    下記のボタンよりダウンロードいただけます。

    そこで活用できるのが、一定の作業を自動化できる「マクロ」です。

    マクロとは、一定の繰り返し作業を自動化し、膨大なデータを手間なく処理できる機能です。Excelに限った機能ではありませんが、マクロを使いこなすことでExcelがさらに便利なツールになります。

    今回は、事務作業を大幅に効率化できるExcelのマクロ機能について、基礎から実践まで解説します。

    Excelの「マクロ」とは?

    マクロとは、Microsoft Excel(エクセル)の作業を自動化する機能を指します。

    マクロを通じて、データ入力や集計、印刷など、Excelで行うすべての機能を操作可能です。事務職の方は重宝するでしょう。

    特に単純な作業を何度もくり返すシーンでマクロが活躍します。

    →ダウンロード: Excelの無料基礎ガイド

     

    マクロを使用してできること

    マクロは基本的に「同じ操作の繰り返し」を行うため、定期的に行う作業があれば、すべてマクロで実行できると考えていいでしょう。

    マクロでは例えば、セルやテーブルの編集、データの集計・加工、ファイルの統合・分割、書類の作成などが行えます。これらを組み合わせることで、以下のような業務を自動化可能です。

    • 毎月の顧客/売上/その他実績などのデータの入力、加工
    • データをまとめた上で表やグラフの作成
    • 定期的に作成する書類の自動作成、画像の挿入、大きさ変更
    • HTMLメールの送信
    • 各ツールからダウンロードしたCSVを取り込んで月次レポートに
    • 毎月の請求書の印刷
    • ウェブから情報を読み取りセルへ記入

    難易度は上がりますが、最後に挙げたメール送信のように外部アプリケーションを巻き込んだ自動化も可能です。
     

    マクロを活用するメリット

    マクロで作業を自動化することで、次のようなメリットがあります。

    • 作業時間が短縮され、別のタスクに時間を使えるようになる
    • 複雑な作業フローが短縮され、簡易的な引継ぎで誰でも作業が可能になる
    • 入力漏れや計算ミスなどのケアレスミスがなくなる
    • 関数を活用することでさらに高度な自動化を実現できる
    • 業務内容の整理につながる

    マクロにより工程の多い作業をまとめることで、作業者の負担は大きく軽減されます。作業時間が短くなることはもちろん、一度マクロに記録してしまえば作業工程もぐっと圧縮されるため、誰でも同じクオリティの作業が可能になるのも利点です。

    また、マクロはExcelだけでなくほかのMicrosoft Officeアプリと連携できる点でも優秀です。メールを自動で送信したり、データをPowerPointやWordへ転送したりと、幅広い業務に活用できます。

    どのような作業がマクロで自動化できるか考えることで、業務を整理し生産性を向上させることにもつながります。例えば、マクロで自動化することが難しい作業があれば、そもそも非効率な手法で行っている可能性もあります。
     

    マクロとVBAの違い

    「マクロ」と「VBA」は混同され、同じような意味で使われることも多いですが、厳密には下記のような違いがあります。

    • マクロ:Excelや他のアプリケーションを決まった順序で制御する機能の名前
    • VBA:マクロ機能で作成する順序を記述するときに使うプログラミング言語の名前

    VBAは、マクロ機能で使われているプログラミング言語なので、機能そのものを指す言葉ではありません。

    VBAを習得することで、マクロを使ってより複雑な処理が行えるようになりますが、「マクロの記録」機能を使えばVBAの知識がない方でもマクロを扱えます。

    また、他のアプリケーションでもマクロとVBAのような関係の機能があります。

    例えばGoogle が提供しているスプレッドシートでは、「GAS(Google Apps Script)」というツールがあります。GASのさまざまな機能の1つにマクロ機能があり、ExcelにおけるVBAのように繰り返しの作業を自動化できます。

    画像処理ソフトのPhotoshopでは「アクション」という機能があり、やはり1つの画像データに施した処理を記録して別の画像へも自動で処理を行うマクロとなっています。

    マクロとVBAの違い

     

    マクロ作成の基本的な使い方を4つのステップで解説

    初めてマクロを学ぶ際は、「マクロの記録」機能を使ってみることから始めましょう。

    通常、マクロはVBAというプログラミング言語で命令を出します。しかし「マクロの記録」を使うと、実際に人間が作業をやってみせることでマクロが作業手順を覚えるため、VBAの知識は必要ありません。

    ちなみに「マクロの記録」を使うと、操作した内容に応じたVBAも自動で記述されます。まずは初歩となる「マクロの記録」の使い方をマスターし、慣れてきたら「マクロの記録」で記述されたVBAを編集したり、一からVBAを記述したりとステップアップしていきましょう。

    ここからは実際のExcelの画面を参照しながら、「マクロの記録」を使う方法をご紹介します。
     

    事前準備:[開発]タブを表示する

    まずは、デフォルトでは非表示となっている[開発]タブを表示させます。[表示]タブからでもマクロの簡単な操作はできますが、いずれステップアップするためにもはじめから[開発]タブを使用するのがおすすめです。

    [ファイル]タブから[オプション]を選択するとExcelのオプションが表示されるので、[リボンのユーザー設定]から[開発]をオンにします。

    事前準備:[開発]タブを表示する

    [開発]タブが現れました。

    事前準備:[開発]タブを表示する_2

     

    ステップ1. マクロの記録を開始する

    [マクロの記録]を選択し、管理しやすいマクロ名を記入してから[OK]を選択すると、以降の操作がすべてマクロとして記録されます。

    ステップ1. マクロの記録を開始する

     

    ステップ2. 記録したい内容を操作する

    記録したい内容を操作します。

    マクロの記録中は、ミス操作もすべて記録されてしまうため注意しましょう。

    今回は、セルB2から下方向へ数字を打ち込み、B13に合計の関数【=sum(b2:b12)】を入力しました。

    [記録終了]を選択すればマクロの完成です。

    ステップ2. 記録したい内容を操作する

     

    ステップ3. 記録したマクロを実行する

    マクロを実行するには、[マクロ]を選択し、実行したいマクロ名を選択して[実行]します。

    ステップ3. 記録したマクロを実行する

    今回は、[マクロの記録]の下の[相対参照で記録]をオンにしていたため、カーソルがずれるとずれた位置からマクロを実行しました。F4からスタートしても、同じようにカーソル位置からマクロが実行されます。

    オフにしていた場合は、必ずB列にマクロが実行されます。

    ステップ3. 記録したマクロを実行する_2

     

    ステップ4. マクロを保存

    マクロを記録したワークシートは、通常の「.xlsx」形式ではなく、特別なファイル形式で保存する必要があります。

    新規保存する際にファイルの種類を展開し、「Excelマクロ有効ブック」で保存すればOKです。

    ステップ4. マクロを保存

     

    Excelのマクロを有効にする方法

    マクロが設定されたExcelは、デフォルトの設定でマクロの実行が無効(警告を表示してすべてのマクロを無効にする)になっています。これは、コンピュータウィルスなどのマルウェアがマクロ機能を悪用することがあるためです。

    設定で警告を無視することも可能ですが、セキュリティ上推奨されてないため、都度有効化の作業をしましょう。

    Excelのマクロを有効にする方法

    マクロが設定されたExcelを開くと、デフォルトの設定ではこのような表示が出るようになっています(※2023年3月現在。Microsoftのセキュリティ更新により変更となる可能性あり) 。

    このような表示になるのは、メールなどから入手したExcelはもちろん、自身が作成したファイルを初めて実行する際にも同様です。

    マクロを実行できるようにするには、このファイルの出どころが安全であることを十分に確認した上で、「コンテンツの有効化」をクリックします。
     

    トラストセンターでマクロの有効/無効を変更する

    上記にてご紹介した方法はマクロを都度有効にするものでしたが、Excelの設定でマクロの有効/無効を変更することもできます。

    なお、この方法で設定を変更するとセキュリティ上推奨されない状態になる可能性があります。特に不都合がなければ、上記の方法で有効にすることが推奨されます。

    Excelの設定を変更するには、「ファイル」タブをクリックし、左カラム下部にある「オプション」をクリックします。下図のオプションメニューが表示されるので、「トラストセンター」をクリックします(※バージョンによっては「セキュリティセンター」の名称になっていることもあります)。

    トラストセンターでマクロの有効/無効を変更する

    トラストセンターのメニューから「マクロの設定」をクリックします。

    トラストセンターでマクロの有効/無効を変更する_2

    デフォルトでは「警告して、VBAマクロを無効にする」になっています。この設定にしていると、上記のようにファイルを開いたときにセキュリティの警告が表示され、マクロを都度有効にできます。

    1つ目の「警告せずにVBAマクロを無効にする」では、マクロは無効にされ、セキュリティの警告も出ません。

    3つ目の「電子署名されたマクロを除き、VBAマクロを無効にする」では、信頼されている発行元により電子署名が付与されている場合にマクロを実行し、そうでない場合マクロは無効にされセキュリティの警告が表示されます。

    4つ目の「VBAマクロを有効にする」では、すべてのマクロが確認なしで実行されますが、推奨されません。この設定ではコンピュータが脆弱な状態になり、マルウェアに感染するリスクが上昇します。
    ※バージョンや更新によって、名称やオプションの挙動が変わることがあります。(上記は2024年1月時点の情報)
     

    マクロの実践:毎月の給与計算を自動化

    ここでは実践編として、毎月の従業員の給与計算をマクロで自動化してみましょう。

    VBAを使ってマクロを編集するとより複雑かつ便利な自動化が可能となりますが、今回は関数を駆使して「マクロの記録」のみで実用的なマクロを作ります。
     

    ステップ1. ファイルを用意

    この実践では、3種類のExcelファイルを用意します。

    • 勤務表のファイル(従業員の人数分)
    • 給与テーブルのファイル(職位ごとの給与を記載)
    • 給与一覧のファイル(マクロを記録・実行する)

     

    1. 勤務表のファイル(従業員の人数分)

    1. 勤務表のファイル(従業員の人数分)

    各従業員の日々の勤務時間を記録したファイルです。F列に終業時間を記録し、G列に労働時間、I列に残業時間が出るようになっています。

    日付は1年分まで用意し、その年の勤務時間はすべてこのファイルに記録します。

    セルM4とN4には、それぞれ以下の関数を入れています。

    • M4【=SUMIFS($G$4:$G$998,$B$4:$B$998,L4)*24】
    • N4【=SUMIFS($I$4:$I$998,$B$4:$B$998,L4)*24】

    これにより、月次の総労働時間と残業時間が自動で算出されます。

    セルM16とN16には、転記用として、作業日の月の総労働時間と残業時間が反映されます。

    • M16【=VLOOKUP(MONTH(TODAY()),$L$4:$N$15,2,FALSE)】
    • N16【=VLOOKUP(MONTH(TODAY()),$L$4:$N$15,3,FALSE)】

    転記用に作業日の前月の時間を反映させたい場合は、以下のようにします。

    • M16【=VLOOKUP(MONTH(TODAY())-1,$L$4:$N$15,2,FALSE)】
    • N16【=VLOOKUP(MONTH(TODAY())-1,$L$4:$N$15,3,FALSE)】

    今回は、従業員3人分を用意します。
     

    2. 給与テーブルのファイル(職位ごとの給与を記載)

    2. 給与テーブルのファイル(職位ごとの給与を記載)

    職位ごとの基本給と残業代、従業員の現在の職位をまとめたものです。セルG4の稼働日数には、計算したい月の稼働日数をあらかじめ入れておきます。
     

    3. 給与一覧のファイル(マクロを記録・実行する)

    最終的に従業員へ支払う総支給額をまとめるファイルです。今回は3名分の行を用意し、総労働時間、残業時間、総支給額がわかるようにしました。

    3. 給与一覧のファイル(マクロを記録・実行する)

    氏名と職位まではあらかじめ入れておきます。

    また、セルF4には以下の関数を入れています。これは、E4に入力があったとき、従業員の職位に応じて「給与テーブル」のファイルを参照し、基本給と残業代を合計して算出する関数です。

    • F4【=IF(E4="","",VLOOKUP(C4,[給与テーブル.xlsx]Sheet1!$B$4:$D$6,2,FALSE)+VLOOKUP(C4,[給与テーブル.xlsx]Sheet1!$B$4:$D$6,3,FALSE)*E4)】

    F4にこの関数を入れると、セル右下にカーソルを合わせて下方向へオートフィルしたときにF5とF6にも同様の関数がコピーされます。
     

    ステップ2. マクロを記録

    すべてのファイルを開いた状態で、「給与一覧」のファイルを開き、マクロの記録を開始します。相対参照はオフです。

    ステップ2. マクロを記録

    「勤務表A」のファイルに移動し、転記用の総労働時間と残業時間をコピーします。

    ステップ2. マクロを記録_2

    「給与一覧」のファイルに戻り、セルD4に“値貼り付け”をします。

    ステップ2. マクロを記録_3

    「勤務表B」と「勤務表C」も同様にコピー&ペーストを行い、すべての従業員の総労働時間と残業時間を貼り付けできたらマクロの記録を終了します。

    今回組んだマクロの仕組みは、以下のようになっています。

    ステップ2. マクロを記録_4

     

    ステップ3. マクロを実行

    総労働時間と残業時間を削除してから、記録したマクロを実行します。

    ステップ3. マクロを実行

    給与計算が一瞬で終わりました。

    ステップ3. マクロを実行_2

    今回作成したファイルでは、次の月になると「勤務表」の転記用のセルM16・N16も自動で更新されるため、あとは毎月マクロを実行するだけで給与計算が完了します。
     

    VBAを使ってマクロを作成・実行する方法

    VBAを使うとより複雑なマクロを組むことができ、関数の作成や条件分岐ができるようになります。以下で、VBAを使ってマクロを作る方法を紹介します。
     

    VBAでマクロを作る方法

    まずは、以下の手順でマクロを作りましょう。

    1.  開発タブを表示
      メニューバーのファイルからオプションを選び、「リボンのユーザー設定」をクリックします。メインタブから「開発」をチェックし、OKボタンを押します。
      開発タブを表示
    2.  「VBA」で「標準モジュール」を開く
      エクセルのメニューバーに開発タブが表示されるようになるので、クリックしてください。「Visual Basic」ボタンを押して「VBA」を開きましょう。
      「VBAProject(Book1)」を右クリックし、挿入、標準モジュール」を押すと、ウインドウの右側に「標準モジュール」が挿入されます。
      「VBA」で「標準モジュール」を開く
    3.  マクロを書く
      挿入した標準モジュールにマクロを記載していきます。慣れないうちは便利なコードをインターネットで検索して転用するようにしましょう。だんだんとコツをつかみ、さまざまな組み合わせのコードが書けるようになります。

     

    VBA上でマクロを実行する方法

    Visual Basicからマクロを実行できるため、コードを書いた後に正常に機能するか試したい場合は実行してみましょう。

    VBA上でマクロを実行する方法

    マクロの実行ボタンは、メニューバーにある三角のボタンです。これを押すと実行できます。
     

    Excelのマクロをより便利に使うための操作

    マクロの作成から実行、保存がスムーズにできるようになったら、さらに便利に使うための方法も押さえておきましょう。特に重要なのは、次の2つです。

    • ワンクリックでマクロが開始できる実行ボタンを作成する方法
    • マクロ対応の新規ファイルが簡単に作れる「テンプレート」を作成する方法

    どちらも作業をより効率化したり、他の方とマクロを共有したりするのに役立ちます。ここからは実際の画面を交えてご紹介するので、ご参考ください。
     

    マクロの実行ボタンを作成する方法

    ルーチンワークをマクロ化した場合、毎回「表示」タブから使用するマクロを選ぶのは面倒です。Excelのシート上にボタンを設置しておくと、クリックひとつで作業が完了できます。

    1.  「開発」タブの「挿入」を選択する
    2.  表示された「フォームコントロール」から、長方形の「ボタン(フォームコントロール)」をクリックする
    3.  セルをドラッグし、ボタンの位置とサイズを決定する
    4.  ドラッグが完了すると自動的に「マクロの登録」ダイアログボックスが表示される
    5.  登録したいマクロを選択し「OK」を押せば、ドラッグした場所がボタンになるマクロの実行ボタンを作成する方法

    作成したボタン上で右クリックし「テキストの編集」を選ぶと、ボタンの表示名を変えることも可能です。どのようなボタンか分かりやすくしたい場合は名前を変更しておきましょう。

    マクロの実行ボタンを作成する方法_2

    他に、「挿入」タブの「図形」から作成したオブジェクトに、マクロを登録することもできます。任意の図形を右クリックし、「マクロの登録」からマクロを選択しましょう。
     

    マクロ対応のテンプレートを作成する方法

    作成したマクロを含むファイルを、ひな型としてほかの文書を作成するのに流用する場合には、テンプレートとして保存すると便利です。

    テンプレートとして保存すると、元ファイルをコピーする手間なく新しいファイルを作成できるようになります。テンプレートにする場合は次の手順で保存しましょう。

    1.  Excelの「ファイル」タブをクリックする
    2.  「名前を付けて保存」をクリックする
    3.  ファイルの種類を「Excel マクロ対応テンプレート(*.xltm)」に変更して保存する

    テンプレートは通常、個人のPCごとに保存されます。他の社員に共有したいときは、各人でテンプレートとして保存してもらうか、保存場所をOneDriveなど共有ネットワーク上に変更しましょう。

    マクロ対応のテンプレートを作成する方法

     

    マクロに関するショートカットキー

    ショートカットキーを活用することで、さらに業務の効率を上げられます。
     

    マクロを操作するショートカットキー

    マクロを作成・実行する際に便利なショートカットキーを紹介します。

    マクロを操作するショートカットキー

    「Alt+F8」は初心者の方からVBAを学んでいる方まで使用頻度が高いのでぜひ覚えておきましょう。

    「Alt+F11」は、VBAが理解できるようになってきた中級者以上向けです。
     

    作成したマクロに任意のショートカットキーを割り当てる方法

    作成したマクロに対して、任意のショートカットキーを割り当てることも可能です。よく使うマクロに設定しておけば、キーボードだけで素早くマクロが実行できます。

    ショートカットキーは、「Ctrl」といずれかのキーを自由に組み合わせることが可能です。

    設定の手順は次のとおりです。

    1.  「表示」または「開発」タブで「マクロ」を選択する
    2.  編集するマクロ名を選択する
    3.  「オプション」をクリックして、任意のショートカットキーを設定
    4.  「OK」をクリックする

     

    Excelのマクロを利用する際の注意点

    Excelのマクロを利用して作業を自動化する際には、以下にご紹介する注意点に留意するといいでしょう。
     

    大量のデータの自動化には要注意

    マクロで作業を自動化する際には、一度の実行で処理データ量が多くなりすぎないよう注意しましょう。滅多にないことですが、Excelの1つのファイルの上限を超える処理はできません。

    また、上限に達しなくても重すぎる処理は時間がかかることがあります。
     

    Officeのアプリケーション以外との連携はできない

    ExcelマクロはOutlookなどのOfficeアプリケーションと連携できる点が優秀ですが、Office外のアプリケーションとの連携はできません。
     

    アプリケーション開発には向かない

    マクロはあくまで作業を自動化する機能であるため、操作画面をデザインして運用するようなアプリケーション開発には向きません。
     

    条件分岐の設定にはVBAを使ったコード編集が必要

    「この場合はAの操作、この場合はBの操作」といったような条件分岐は、初心者でも使いやすい「マクロの記録」では対応できません。

    複雑な条件分岐も含めたマクロを実装したい場合は、VBAを利用したコード編集が必要となります。
     

    マクロの動作確認を徹底する

    マクロを作成したら、さまざまな実行パターンを試し、正常に処理が完了するかの確認を徹底しましょう。例えばメール送信などの場合は、誤操作で大きな騒動に発展する可能性もあります。

    また、マクロの組み方を間違えた際に処理が止まらなくなることがあります。その場合はキーボードのEscキーで処理を抜けることができます。
     

    マクロを管理する担当者を立てる

    作成したマクロはチーム内で共有して使用することが多いかと思われますが、それぞれが自由に利用できる状況では誤編集などにより取り返しのつかないミスや大きな出戻りにつながる可能性があります。

    そのため、マクロの作成・編集・使用を統括する管理者を立て、予期しないエラーやミスの起きにくい体制を作りましょう。
     

    マニュアル化して誰でもメンテナンスを引き継げるようにしておく

    マクロを組むには一定の知識と経験が必要になること、コードの解説が不十分な場合は他者が理解するのが難しいことが要因で、属人化しやすくなります。

    チーム内でマクロのコード内容を定期的に共有するようにしましょう。また、一度口頭で説明しただけでは、理解・改修は難しいため、マニュアル化しておくのがおすすめです。

    できるだけ分かりやすく、初心者が見ても理解できるようなレベルにしておくことでメンテナンスを誰でも引き継げます。
     

    マクロを活用して業務効率を上げよう

    Excelのマクロはルーチン作業の自動化が得意です。データ入力や集計でマクロが使いこなせると、作業スピードが数倍~数十倍にアップする可能性もあります。

    業務効率が上がって余裕が出れば、さらなる効率化のアイデアを考えたり、クオリティを上げる工夫をしたりする時間も確保しやすくなります。

    結果的に、顧客に対してもより上質なサービスを提供できる体制が整うため、マクロを事務作業に導入する価値は高いと言えるでしょう。小さな効率化の積み重ねが顧客の利益につながります

    まずはここでご紹介したような基礎から、業務の効率化に挑戦してみてください。

    HubSpotではこの他にもマーケティングやセールスに役立つ資料を無料で公開していますので、ぜひこちらからご覧ください。

     

    [JAPANESE] Excel Guide_image

    トピック: エクセル

    関連記事

    基本的な操作方法から、表やグラフ、ピボットテーブルの作成方法、利用頻度の高い関数の活用方法を初心者でもわかりやすいよう解説しています。

      Marketing software that helps you drive revenue, save time and resources, and measure and optimize your investments — all on one easy-to-use platform

      START FREE OR GET A DEMO