Excel マクロ・VBA

【第2回】コードが書けなくても大丈夫!AIで複数Excelファイルを自動集計するマクロを作ろう(前編)

Excel マクロ・VBA

Excelの仕事でよくあるのが、「支店別」「担当者別」「月別」など、複数ファイルに分かれたデータを1つにまとめる作業です。
たとえば、各支店から毎月送られてくる「売上報告書.xlsx」を、手作業で1つに集計していませんか?

この作業、じつはAIを使えば1回のクリックで自動化できます。
しかも、マクロやVBAの知識がなくても大丈夫。
AIに「こういうことをしたい」と伝えるだけで、すぐに動くマクロを作ってくれるんです。

✅この記事を読む前に

マクロを初めて使うという方は先にこちらのマクロの有効化やファイル保存について解説したこちらの記事をご覧ください

今回の目標

今回は、フォルダ内にある複数のExcelファイルを自動で集計して1つにまとめるマクロを作ります。

【想定】
各支店から、毎月、集計表が送られてくる。(画像1、画像2)
本店勤務のあなたはこれらのデータを、「毎月”いい感じ”に集計してほしい」と上司に指示を受けたとします。

画像1
画像2

※ 前提として、各支店のファイルは同じフォーマットであること(行・列がバラバラ、タイトル行の文字がバラバラだとコードが複雑化したり、そもそも自動集計ができなくなったりします。)

実際にAIに聞いてみる

最初はあまり難しいことを考えず、シンプルに「やりたいこと」をAI(Gemini)に聞いてみます。
※ 以下は実際のやり取りであり、内容をほぼそのままコピペしています。
指示の補助として、実際にファイルをアップロードしていますが、セキュリティや個人情報保護などの観点から、アップロードは推奨されない場合があるので、十分注意して下さい。

かえる
かえる
添付ファイル

Excelのマクロを作ってほしい。

各支店の売上データが入ったExcelファイルが毎月送られてくる(添付のファイルのようなデータが、毎月送られてくる)

これを本社で毎月、統合して自動集計したい

AI(Gemini)
AI(Gemini)

はい、承知いたしました!「コーディング パートナー」として、お客様の目標達成を全力でサポートさせていただきます。💪

お客様の目標は、毎月送られてくる複数の支店売上データを自動的に一つのファイルに統合し、集計しやすい状態にすることですね。これはExcelマクロ(VBA)の得意なタスクです!

まずは、具体的なコードを作成するために、いくつか簡単な確認をさせてください。

1. 要望の確認

より使いやすく、正確なマクロを作成するために、次の2点について教えていただけますか?

  1. 統合対象のファイルはどこにありますか?
    • 統合したいExcelファイル(添付いただいたようなデータ)は、一つの特定のフォルダにまとめて保存されていますか?(例: デスクトップの「売上集計用」フォルダなど)
  2. 統合後の集計はどのように行いますか?
    • 「集計」とは、まず単純に全データを一つのシートにまとめることですか?それとも、その後に**「カテゴリ別」や「支店別」の合計売上**などのサマリーもマクロで作成したいですか?

今回は、まずご要望の核となる**「複数ファイルの全データ統合マクロ」を作成します。このマクロは、ファイル名から支店名月**を自動で取得し、統合データに追加する機能を含めます。これにより、後から様々な集計を行うのが非常に簡単になります。


2. 解決策の概要

今回作成するマクロ(VBAコード)の概要は以下の通りです。

📊 マクロでできること

  • お客様が指定したフォルダ内にあるすべてのExcelファイル(.xlsx.csv など)を自動で見つけます。
  • 各ファイルを開き、中身の売上データを、マクロを実行したファイル内の新しいシートに次々とコピー&ペーストして統合します。
  • ファイル名(例: 大阪店_01月.xlsx)から**「支店名」「月」**の情報を自動で抽出し、統合データに新しい列として追加します。

⚙️ 開発の手順と前提条件

  1. 前提条件: 統合したいファイルが、一つのフォルダにまとまっている必要があります。
  2. 開発の手順:
    • マクロを格納するExcelファイル(マクロ実行用ブック)を開きます。
    • VBAエディタを開き、提示するコードを貼り付けます。
    • マクロを実行すると、フォルダ選択ダイアログが表示されるので、統合したいファイルが入ったフォルダを選択します。
    • 新しいシートに統合データが完成します。

3. コードと実装手順

💻 VBAコード: 複数ファイル統合(支店・月情報追加機能付き)

以下のコードは、コピー&ペーストしやすいように設計されています。

このマクロを実行すると、フォルダ選択ダイアログが開き、選択されたフォルダ内のファイルを処理し、統合データという名前の新しいシートに結果を出力します。

📋 実装手順(初心者向け)

このマクロをExcelに組み込む手順は非常にシンプルです。

  1. 開発タブを表示する
    • Excelを開き、[ファイル] タブをクリックし、[オプション] を選択します。
    • [リボンのユーザー設定] を選択し、右側の [開発] にチェックを入れます。
    • [OK] をクリックすると、Excelの上部リボンに [開発] タブが表示されます。
  2. VBAエディタを開く
    • [開発] タブをクリックし、左端の [Visual Basic] をクリックします。(または Alt + F11 キーを押します)
  3. 新しい標準モジュールを挿入する
    • VBAエディタの左側にあるプロジェクトエクスプローラー(通常は VBAProject(ファイル名) と表示されています)で、[挿入] メニューをクリックし、[標準モジュール] を選択します。
  4. コードを貼り付ける
    • 新しく開いた白い画面(モジュール)に、上記のVBAコードをすべてコピー&ペーストします。
  5. マクロを実行する
    • Excelの画面に戻り、[開発] タブの [マクロ] をクリックします。(または Alt + F8 キーを押します)
    • 表示された一覧から 支店別売上データ統合マクロ を選択し、[実行] をクリックします。
    • フォルダ選択ダイアログが表示されるので、統合したいファイル(大阪店_01月.xlsx など)が入っているフォルダを選択し、[OK] をクリックしてください。

これで、統合データという新しいシートにすべてのデータが結合されます。


ご不明な点があれば、いつでもお尋ねください。このコードで実行してみて、エラーが出たり、ご要望と違う点がありましたら、すぐに修正いたします!

結果の検証

実際にAIの回答をもとに、マクロ実行まで進めていきます。
その前に、フォルダ・ファイル構成を以下のように先に整理しておきます。

✅マクロの有効化の方法について

マクロを初めて使うという方は先にこちらのマクロの有効化やファイル保存について解説したこちらの記事をご覧ください

1. Excelファイルを開き、VBAエディタを起動

Alt + F11キーを押してVBA(Visual Basic for Applications)エディタを起動します。

2. 標準モジュールを挿入

VBAエディタのメニューで 挿入(I)標準モジュール(M) を選択します。

4. コードの貼り付け

新しく開いたモジュールの白いエディタ領域に、AIが回答してくれたVBAコードすべてコピー&ペーストします。

5. マクロを実行

Excelに戻ります。(Alt + F11で切り替え)
メニューの 開発 タブ(表示されていない場合は、設定で表示させてください) → マクロ をクリックするか、Alt + F8キーを押します。

7. マクロを実行した結果

マクロを実行するとこのように、処理したいファイル(各支店のデータ)がどのフォルダにあるのかを選択するウィンドウが表示されました。先ほど僕がAIにした指示では、処理したいファイルがどこにあるのかを明確に指示していなかったため、AIは処理の冒頭で、このようにフォルダを任意で選択するコードを組み込んでくれました。

集計したいファイルが入っているフォルダを選択して「OK」を押す。

約1分程度、Excel画面が何かを処理している(画面がちょっとチカチカしたり、カーソルが読み込み状態になったり)状態のあと、このように処理が完了したとのポップアップウィンドウが表示されました。「OK」ボタンを押して、処理の結果を確認してみましょう。

まず気になったのは1行目と2行目ほぼ同じタイトル行が2つあります。
でもよく見ると、K列は1行目が「支店名」であるのに対し、2行目は「名古屋支店」となっています。おそらくですが、この統合データ全体としてタイトル行を作った後に、各支店データを取り込む際にもう一度、タイトル行を取得したことで、二重で表示されてしまった?と推察。これは、次の指示で修正を依頼してみましょう

下の行までずーっとスクロールすると、名古屋店1月→2月→3月→・・・の順にデータが入っていました。そして10月(今回用意しているのは10月までなので、実質最新月)までくると、大阪店の1月が始まっています。ここでまた問題点。画像を見てわかる通り、大阪店に切り替わるタイミングでまた、タイトル行が表示されています。コードの中身はわかりませんが、おそらく支店ごとに最初の行にタイトル行を抽出して表示するようになっているのかも。(ほかの支店も最初の行でタイトル行が表示されていました。)

まとめ(さらなるアップデートへ)

先ほどのコードでは、各ファイルを順に開き、データを抜き取り、本社集計ファイルに上から順に貼り付けていくという処理が実行されていました。これだけでも、一つずつファイルを開いては、コピーペースト、また開いて・・・という作業をボタン一つでできるわけですから、十分便利ですが、これではただまとめただけで、いい感じの集計ファイルとは言えないですよね。

次の記事では、AIと対話を重ねこのコードをさらにアップデートしてハイテクなマクロファイルに仕上げていきます!

コメント