Excel VBAでコードごとにシート分割&自動集計するマクロの作り方【初心者OK】

 

毎回、Excelの同じ作業に時間を取られていませんか?

 

たとえば「コードごとにデータを分けてシートごとに集計を作成する」ような地味だけど面倒な作業…。

でも実は、それ、たった1クリックで自動化できるって知っていましたか?

 

この記事では、初心者の方でも安心して使える「コードごとにシートを分けて集計するExcelマクロ」の使い方を、画像・手順付きでわかりやすく解説します。

 

ぜひご自身の作業に合わせて使ってみてください。

 

【初心者向け】Excelマクロ記事はここをクリックで一覧表示します

 

コード別にデータを分けて集計するマクロとは?|活用シーンと背景

Excelシートに同じ表形式のデータが大量にあるとき、「コードごとに別のシートに分けて、集計表を作成して保存したい…」ということはありませんか?

 

たとえば

・データのコードごとに日別集計シートを自動で作成する
 ・担当者コード、商品コード、得意先コード・・・ごとにシートを分けた日別集計

そんな時に便利なのが、この「コードごとに自動でシートを分けて集計するマクロ」です。

 

このマクロでできること|データ集計の自動化が変わる

1枚のシートにまとめられたデータから、指定したコード列、日付列、金額列をもとに、コードごと日付、金額で集計し、コードごとにシートを分けて転記。

 

手作業不要!「マクロ実行」だけですぐに完成します。

 

実装は3ステップ!コード別にシートを自動生成する方法

 

1. 元データをExcelに準備する。

2. マクロを起動(フォームから対象のExcelとコード列を指定)

3. 各コードごとのシートが自動で作成されます。

 

もう、手作業でフィルタしてコピー&ペーストした後、集計する必要はありません。

 

スムーズに動かすために押さえたい3つのポイント

 

①モジュール構成を覚えよう

「ThisWorkbook」→ 起動時にフォーム表示

「UserForm」→ フォームの見た目と操作

「標準モジュール」→ 実際の分割処理

 

②対象Excelフォーマット

コード列を統一しておく(たとえば、担当者コードはA列に統一する、日付列はB列、金額列はC列など)

 

③トラブル対策

マクロを実行する前に、対象のExcelファイルをバックアップする(別フォルダにコピーをとる)

 

よく変更されるマクロのカスタマイズ箇所まとめ

変更箇所(追加) 内容 たとえば、このように変更
newWS.Name = codeKey シート名を「コード+日付」などにする newWS.Name = codeKey & "_" & Format(Date, "yyyymmdd")
newWS.Range("C1") = "追加列名 出力する列を追加する ループ内で値を入れるコードを追加

 

【検証済】マクロの使い方|保存・実行・動作チェックの手順

 

以下手順で、シートごとにコード別日別集計するマクロは完成します。

フォームはコードがないので、ご自身で作成することになりますが、その他のコードは、【検証済】マクロコードをコピペすればすぐに利用できます。※フォーム作成方法も、下記で詳しく説明しますので、ご安心ください。

 

Excel起動からユーザーフォーム作成の操作

フォームのデザインで使うオブジェクト一覧

オブジェクト名 種類 キャプション
変更しない Label 対象Excelファイル
txtFile TextBox 空白
btnBrowse CommandButton ファイル選択
変更しない Label コード列(例:A)
txtCodeCol TextBox 空白
変更しない Label 日付列(例:A)
txtDateCol TextBox 空白
変更しない Label 金額列(例:A)
txtAmountCol TextBox 空白
btnAggregate CommandButton 集計
btnClose CommandButton 終了

 

新規 空白のブックをクリックします

 

ALT+F11で、下記開発画面になります。

 

ユーザーフォームのデザイン画面になります。

 

ツールボックスでユーザーフォームを作成します。

 

下記は、ツールボックスをドラッグで移動してサイズを変更した画面

 

下記は、ツールボックスをドラッグで移動してサイズを変更した画面

 

ツールボックスのコントロールがたくさんありますが、今回使うのは、下記の3種類(ラベル、テキストボックス、コマンドボタン)です。

 

ユーザーフォームを作成:ラベルを作る(表題)①

 

対象Excelファイル

ユーザーフォームを作成:ラベルを作る(表題)②

 

ユーザーフォーム作成:テキストボックスを作る(画面がら文字入力する場所)

 

ファイル選択

ユーザーフォーム作成:ボタンを作る(何かの動作をさせる際のボタン)①

 

ユーザーフォーム作成:ボタンを作る(何かの動作をさせる際のボタン)②

 

コード列(例:A)から終了まで

ユーザーフォーム作成

 

ユーザーフォーム作成でよくある操作
初心者が、やばい!間違えた。どうしようとやめちゃう操作

 

こうなったら、

 

もう一度、UserForm1画面を表示する前に・・・

 

ユーザーフォームのデザイン画面にする

 

Cのプロパティウィンドウのオブジェクト名を変更

 

txtFile

テキストボックスの名称(オブジェクト)を変更

 

btnBrowse

コマンドボタンの名称(オブジェクト)を変更

 

txtCodeCol

テキストボックスの名称(オブジェクト)を変更

 

txtDateCol

テキストボックスの名称(オブジェクト)を変更

 

txtAmountCol

テキストボックスの名称(オブジェクト)を変更

 

btnAggregate

コマンドボタンの名称(オブジェクト)を変更

 

btnClose

コマンドボタンの名称(オブジェクト)を変更

 

【検証済】コードをコピペ

ここから、【検証済】コードをコピペしていきます