ExcelマクロVBA再入門
第25回.月別ブックより部署別シートに担当別に集計するNo1

マクロが覚えられないという初心者向けに理屈抜きのやさしい解説
最終更新日:2015-12-08

第25回.月別ブックより部署別シートに担当別に集計するNo1


マクロ再入門と題しての連載もいよいよ大詰めです、
これまでの総復習として、
以下のような処理のマクロを書いてみましょう。


■処理概要

月別のデータファイル(ExcelファイルまたはCSV)を読込み、
※項目は、日付,部署,担当者,売上数,売上金額
これを、新規ブックを作り、部署別のシートに、担当者・年月ごとの集計値を出力する。
※部署をシートにして、項目は、担当者,年月,売上数,売上金額

■サンプルファイル

sample_ReIntro.xlsm ・・・ マクロ本体のExcelファイル
月別データ
  201504.xlsx ・・・ 月別データのExcelファイル
  201505.xlsx ・・・ 月別データのExcelファイル
  201506.xlsx ・・・ 月別データのExcelファイル
sample_ReIntro.xlsm
マクロVBA サンプル画像

・ファイル一覧

・データ
・集計
以上のシートは中身は空のシートです。

部署別
マクロVBA サンプル画像

201504.xlsx
マクロVBA サンプル画像

■処理手順

・ファイル一覧
シート「ファイル一覧」に、
サブフォルダ「月別データ」内の全Excelファイルの一覧を取得

・データ収集
シート「データ」に、
ファイル一覧で取得したExcelファイルの先頭シートのデータ集める。

・部署別作成
シート「データ」より、
部署別のシートに、担当者・年月ごとの集計値を出力する。


ファイル一覧の作成は、
第21回.ファイル一覧を取得する

マクロVBAで他のブック(ファイル)を扱う時、まず問題となるのがファイル名です、ファイル数が常に同じでファイル名も変化しなければ良いのですが… ファイル数もファイル名も決まっていない場合は、まずはファイルの一覧を取得する必要があります。ファイル名を取得するには、Dir関数を使います。
ここで既にやっていますので、ほぼそのまま使えます。

データ収集は、

第22回.複数ブックよりデータを集める
他のブックを開いて指定シートの指定セル範囲のデータを取得する、取得したデータを使って、目的の表を作り上げる、これこそマクロVBAの真価が問われる処理でしょう。これまでにやってきた内容が出来れば大丈夫です。これまでの内容を上手く組み合わせるだけです。
ここでの内容に若干の修正が必要です。
月別データの先頭行にある見出し行は必要ないので、
2行目以降のデータ部分のみ収集します。

部署別作成は、
ここが問題です。
方法は2通り用意しました。

方法1

データを、 部署、担当、日付で並べ替える。
データの先頭行から順に処理していき、
部署が変わったらシートを作成
担当が同じ間は集計し、担当が変わったら出力

方法2

データを、 部署、担当、日付で並べ替える。
フィルタの詳細設定を使い、
部署の一覧と、
部署、担当の重複のない一覧を作成
Sumifs関数を使い部署、担当で集計する。
部署の一覧をもとに、シートを作成しながら、
当該部署で、部署、担当で集計した表をフィルタしてからコピーする。


このような手順でマクロを作成していきます。
マクロVBAを作る際には、このような手順を考えることが最も重要です。
その時、シート上で実際に手作業でやりながら考えるようにしてください。
実際に、データを並べ替えて、目でみながら、この行になったらシートを作る・・・
このように考えながら操作してみる事です。
ここまで出来れば、マクロは半分完成したようなものです。
マクロが書けないと言っている方のほとんどは、この手作業が出来ていないのです。


次回以降、マクロVBAコードを紹介しつつ、
これまでの復讐として解説していきます。



同じテーマ「マクロVBA再入門」の記事

第20回.全てのシートに同じ事をする(For~Worksheets.Count)
第21回.ファイル一覧を取得する(Do~LoopとDir関数)
第22回.複数ブックよりデータを集める
第23回.複数のプロシージャーを連続で動かす(Callステートメント)
第24回.マクロの呪文を追加してボタンに登録(ScreenUpdating)
第25回.月別ブックより部署別シートに担当別に集計するNo1
第26回.月別ブックより部署別シートに担当別に集計するNo2
第27回.月別ブックより部署別シートに担当別に集計するNo3
第28回.月別ブックより部署別シートに担当別に集計するNo4
第29回.月別ブックより部署別シートに担当別に集計するNo5
第30回.今後の覚えるべきことについて


新着記事NEW ・・・新着記事一覧を見る

Byte配列と文字コード関数について|VBA技術解説(8月20日)
PowerQueryの強力な機能をVBAから利用する方法|VBA技術解説(8月4日)
練習問題31(セル結合を解除して値を埋める)|VBA練習問題(7月30日)
練習問題30(マトリックス→リスト形式)|VBA練習問題(7月25日)
Applicationを省略できるApplicationのメソッド・プロパティ一覧|VBA技術解説(7月22日)
コレクション(Collection)の並べ替え(Sort)に対応するクラス|VBA技術解説(7月20日)
CSVの読み込み方法(ジャグ配列)|VBAサンプル集(7月15日)
その他のExcel機能(グループ化、重複の削除、オートフィル等)|VBA入門(7月14日)
オートフィルタ退避回復クラスを複数シート対応させるVBAクラス|VBA技術解説(7月6日)
オートフィルタを退避回復するVBAクラス|VBA技術解説(7月6日)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|ExcelマクロVBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.変数とデータ型(Dim)|ExcelマクロVBA入門
6.繰り返し処理(For Next)|ExcelマクロVBA入門
7.マクロって何?VBAって何?|ExcelマクロVBA入門
8.セルに文字を入れるとは(Range,Value)|VBA入門
9.ひらがな⇔カタカナの変換|エクセル基本操作
10.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説



  • >
  • >
  • >
  • 月別ブックより部署別シートに担当別に集計するNo1

  • このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


    記述には細心の注意をしたつもりですが、
    間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
    なお、掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。




    このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
    本文下部へ