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再入門」の記事

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

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

Withステートメントの実行速度と注意点|VBA技術解説(6月6日)
VBA+SeleniumBasicで検索順位チェッカー(改)|VBA技術解説(6月2日)
マクロでShift_JIS文字コードか判定する|VBA技術解説(6月1日)
Shift_JISのテキストファイルをUTF-8に一括変換|VBAサンプル集(5月31日)
「VBAによる解析シリーズその2 カッコ」をやってみた|エクセル(5月21日)
VBA+SeleniumBasicで検索順位チェッカー作成|VBA技術解説(5月18日)
テーブル操作のVBAコード(ListObject)|VBA入門(5月12日)
テーブル操作の概要(ListObject)|VBA入門(5月12日)
VBAのスクレイピングを簡単楽にしてくれるSelenium|VBA技術解説(5月6日)
Excelワークシート関数一覧(2010以降)|VBAリファレンス(4月22日)

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

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



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

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


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






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

    本文下部へ