複数ファイルから特定データを収集するエクセルVBAの概要

datasyusyueyecatch

資料とする複数のエクセルファイルから、個々のデータを収集して一つの纏まった資料を作成する補助ツールです。力ずく強引でなくとも、VBAでサクッと熟す方法の概要を紹介します。

こんにちは、じゅんぱ店長(@junpa33)です。

今回から、すでにエクセルで作成した資料を利用する時のための「ちょっと便利なVBA」マクロについて紹介します。

エクセルで作成された複数のファイルから、それぞれ必要な特定のデータを収集することのできるツールです。

特に、同一の様式(テンプレート)で作成されていれば、地域別とか時系列などと、

「ある同じ項目のデータ」だけを抜き出して利用したいときに便利にお使いいただけると思います。

例えば、

月別に作成された売上実績のエクセルブックで、その中は日別シートになっています。

シート内のタイトル行には「販売拠点」、タイトル列には「販売品目」

各セルにはそれぞれの実績数値が記述されている

を想定します。

「〇〇〇店で、年度通期の毎週月曜日の◇◇商品の販売実績をまとめて比較したい。」

といった場合などに利用することが出来ます。

データファイルの条件
  • データとなるファイルのフォーマットが同一であること。
  • テンプレートシートが同じ。シート名の共通ルール化、データ項目の配置

データ抽出先のそれぞれのエクセルブックでの、「シート名」と項目の「データ位置(セル番地)」の共通性に基づいて、データ抽出を行っていきます。

.

これからの記事をお読みいただくことで、ご自分で作成しVBAコードを変更して、このソフトをカスタマイズすることが出来ます。

このエクセルソフトは以下からダウンロードすることができます。ダウンロード頂いた「複数エクセルファイルのデータ収集ソフト」はライセンス無料で使用いただけます。

ダウンロードはこちらから↓

datasyusyueyecatch005 「複数エクセルファイルのデータ収集VBA」の取説と無料DL

このソフトはご自分で業務でお使いいただくのはフリーですが、

転載や転売については許可しておりませんので、ご使用にならないよう固くお断りいたします。

違法ルートで入手された場合は、著作権に抵触します。

This software is free to use for your own business,

Reproduction or resale is not permitted, so please refrain from using it.

It violates copyright if it is obtained through illegal routes.

複数のエクセルファイルからデータ収集したい

detasyuup012

顧客別や月別など個別に纏めたエクセルのファイル。

この中のデータ数値を、同じ項目ごとに取り出して集計していくという作業は、普通に多い作業ではないかと思います。

真面に正面から作業を始めると ”とんでもなく時間がかかる” 業務効率的に言うと「とんでもなく非効率」な作業になります。

この非効率を解決するためには、エクセルVBAを使って自動処理をさせるのがベストな方法です。

幾らエクセルワークシート関数を知っていても、それだけでは作業能率的にはチョッと厳しいんじゃないでしょうか。

また一度、このVBAを作成しておけば、その後はこれを再利用していくだけのことです。

データ収集できるエクセルVBAを上手く使う条件

detasyuup013

まず、それぞれ、どのようなエクセルBOOKのどの部分のデータを取り出すかを指定しなければいけません。

ただし、

この時、テンプレートが統一されていない、全く様式がバラバラの資料であるとすれば、一つのデータを取り出すために一回ずつ条件指定をしないといけなくなります。

そういった環境であれば、ほとんど効率的なものにはなりません。

様式が統一された内容のエクセルファイルを選ぶ必要があります。

上手く収集できるファイルの作成された要件

繰り返し作成していく資料データは、同一の様式(テンプレート)で作成されていることが重要です。

形の内容的にはそれぞれ独自な形式になっていても大丈夫です。

要は効率よく作業をするには、

取り出したいデータそれぞれが、エクセルファイルの目的シートの同じセルの番号(番地)に書かれていることが重要です。

実際には大体が、何らかのテンプレートで統一されたファイル様式になっていることが多いかとは思います。

ですので、ほとんどのケース、このことはあまり問題にはならないかとも思います。

ただ、ご注意いただきたいのは、ファイルの中の「シート名」についてです。

共通のシート名でかつ大文字小文字、半角全角すべて統一しなければなりません。

一字でも違えばシート名については、プログラム側で違う(その様にコードを作成しています)と判断してしまいます。

読み取り出来るようにVBAコードを組めばいいとは言うものの、

その前に、作ったテンプレートは一々細かくは改変せず、その今ある通りそのまま使うように考えた方が後々楽だと思います。

特にこのVBAの自動化は資料の形式がみんな同じ(共通)であることが重要です。

資料データとなる収集ファイルのフォルダ別分類要件

一つのまとめ資料を作るのに、そのための資料となるエクセルファイルを「同じフォルダ」に入れておきます。

例えば、

見積書フォルダ

  1.  ーーー 2020A店見積.xlsx 、A店(フォルダ) --- 01見積.xlsx 、02見積.xlsx、03見積.xlsx、04見積.xlsx・・・
  2.  ーーー 2020B店見積.xlsx 、B店(フォルダ) --- 01見積.xlsx 、02見積.xlsx、03見積.xlsx、04見積.xlsx・・・
  3.  ーーー 2020C店見積.xlsx 、C店(フォルダ) --- 01見積.xlsx 、02見積.xlsx、03見積.xlsx、04見積.xlsx・・・

といった場合

  •  見積書フォルダを、資料ファイルのピッキング先とすれば、2020A店見積.xlsx・2020B店見積.xlsx・2020C店見積.xlsxを参照して、指定位置からデータを取ってきます。
  •  A店(フォルダ)を、資料ファイルのピッキング先とすれば、01見積.xlsx 、02見積.xlsx、03見積.xlsx、04見積.xlsx・・・を参照して、指定位置からデータを取ってきます。

データを収集するエクセルVBAの操作概要

detasyuup014

資料となるエクセルファイルからどのようなデータを取ってくるかを指定する必要があります。

そこで、

抽出(収集)データの「項目名」、表示されている「セル番号」 を指定します。

エクセルファイル内のどの「シート名」のシートから収集してくるかを指定します。

このシート名の指定方法は、データを収集したいエクセルファイル群の中から適宜に代表的ファイルを指定することで、それに基づきシートリストを作成します。

次に、

資料となるエクセルファイルが保存されている「フォルダ」を選択します。

あとは、

「抽出実行」を押せば各資料ファイルからのデータ取り出しを開始します。

結果表示は、

余計な作表はせずに、データの羅列の形式で一覧表示できるようにします。

この抽出データの一覧表につては、コピペやエクセル関数で集計などを行うことが出来るようにします。

データを収集するVBAの概要 まとめ

detasyuup015

今回から、それぞれのエクセルファイルから、今必要なデータ数値を取り出して一覧表示できるVBAを組み立てて行きます。

特に実務では、度々必要になってくるエクセル作業ではないかと思います。

この記事をお読みいただいたことを機会に、

ここからDLして利用いただくだけではなく、このVBAプログラムのコードも公開していますので、是非ご自分でチェックしてみてください。

人それぞれに作業のやり方が異なる部分ですし、「この様にしたい、あのように出来たら」ということも多いかと思います。

プログラムの動きを知っていれば、途中で動かなくなってもVBAコードを修正してリカバーすることができると思います。

これから作成していくエクセルVBAソフトは、

  • 収集(抽出)データ項目は1シート当たり5項目
  • 収集データの入ったファイルの代表的なものからシート名を自動表示する。
  • エクセルファイル内の収集可能シート数は無制限で収集するシートの選択可能
  • 収拾作業の収納フォルダーをダイアログで選択できる。

という様にしていきます。

次回の記事から順にVBAコードの説明をしていく予定です。

次の記事に進むにはこちら↓です。

datasyusyueyecatch002 エクセルファイルからのデータ収集。取り出し条件設定シート作成

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

vbastudyeyecatch2 エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です

今回の記事はここまでです。   最後までご覧いただき有難うございました。

エクセルVBA最速理解で必要な知識を集めよう!

エクセルVBA業務ツールで日常の業務改善を行いましょう。

<記事内容についての告知>VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。