こんにちは、じゅんぱ店長(@junpa33)です。
今回から、すでにエクセルで作成した資料を利用する時のための「ちょっと便利なVBA」について紹介します。
エクセルで作成された複数のファイルから、それぞれ必要な特定のデータを収集することのできるツールです。
特に、同一の様式(テンプレート)で作成されていれば、地域別とか時系列などと、
「ある同じ項目のデータ」だけを抜き出して利用したいときに便利にお使いいただけると思います。
例えば、
月別に作成された売上実績のエクセルブックで、その中は日別シートになっています。
シート内のタイトル行には「販売拠点」、タイトル列には「販売品目」
各セルにはそれぞれの実績数値が記述されている
を想定します。
「〇〇〇店で、年度通期の毎週月曜日の◇◇商品の販売実績をまとめて比較したい。」
といった場合に利用することが出来ます。
データファイルの条件
- データとなるファイルのフォーマットが同一であること。
- テンプレートシートが同じ。シート名の共通ルール化、データ項目の配置
データ抽出先のそれぞれのエクセルブックでの、「シート名」と項目の「データ位置(セル番地)」の共通性に基づいて、データ抽出を行っていきます。
これからの記事をお読みいただくことで、ご自分で作成しVBAコードを変更して、このソフトをカスタマイズすることが出来ます。
完成品はこちら↓でダウンロードすることでソフトを入手することも出来ます。
ただし、こちらの方はVBAコードを保護していますので、使う側でのVBAコードのカスタマイズを行うことはできません。
ここの記事説明とダウンロードしたソフトで、早々に利用していただくことが出来ます。
“複数エクセルファイルのデータ収集VBA1.1” をダウンロード datasyusyu1.1.zip – 4205 回のダウンロード – 26 KB
このソフトはご自分で業務でお使いいただくのはフリーですが、
転載や転売については許可しておりませんので、ご使用にならないよう固くお断りいたします。
コンテンツ
複数あるエクセルファイルからデータ収集をしたい
顧客別や月別など個別に纏めたエクセルのファイル。
この中のデータ数値を、同じ項目ごとに取り出して集計していくという作業は、普通に多い作業ではないかと思います。
真面に正面から作業を始めると ”とんでもなく時間がかかる” 業務効率的に言うと「とんでもなく非効率」な作業になります。
この非効率を解決するためには、エクセルVBAを使って自動処理をさせるのがベストな方法です。
幾らエクセルワークシート関数を知っていても、作業能率的にはチョッと厳しいんじゃないかと思います。
また一度、このVBAを作成すれば、その後はこれを再利用していくことが出来ます。
データを収集するエクセルVBA うまく使う条件
まず、それぞれ、どのエクセルBOOKのどこの部分のデータを取り出すかを指定しなければいけません。
この時、全く様式がバラバラの資料であるとすれば、一つのデータを取り出すために一回ずつ条件指定をしないといけなくなります。
そういった環境であれば、ほとんど効率的なものにはなりません。
うまく収集するためにはそのファイルが同じルールで纏められていること
繰り返し作成していく資料データは、同一の様式(テンプレート)で作成されていることが重要です。
様式的にはそれぞれ独自な形式になっていても大丈夫です。
要は効率よく作業をするには、
取り出したいデータそれぞれが、エクセルファイルの目的シートの同じセルの番号(番地)に書かれていることが重要です。
実際には大体が、何らかのテンプレートで統一されたファイル様式になっていることが多いかとは思います。
ですので、ほとんどのケース、このことはあまり問題にはならないかとも思います。
ただ、ご注意いただきたいのは、ファイルの中の「シート名」についてです。
大文字小文字、半角全角すべて統一しなければなりません。
一字でも違えば、違うシート名とエクセルVBAコードが判断してしまいます。
読み取り出来るようにVBAコードを組めばいいとは言うものの、
その前に、作ったテンプレートは一々細かくは改変せず、その今ある通りそのまま使うように考えた方が後々楽だと思います。
特にこのVBAの自動化は資料の形式がみんな同じ(共通)であることが重要です。
資料データとなるファイルはフォルダ別分類をしておきます
一つのまとめ資料を作るのに、そのための資料となるエクセルファイルを「同じフォルダ」に入れておきます。
例えば、
見積書フォルダ
ーーー 2020A店見積.xlsx 、A店(フォルダ) --- 01見積.xlsx 、02見積.xlsx、03見積.xlsx、04見積.xlsx・・・
ーーー 2020B店見積.xlsx 、B店(フォルダ) --- 01見積.xlsx 、02見積.xlsx、03見積.xlsx、04見積.xlsx・・・
ーーー 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の操作概要
資料となるエクセルファイルからどのようなデータを取ってくるかを指定する必要があります。
そこで、
抽出(収集)データの「項目名」、表示されている「セル番号」 を指定します。
エクセルファイル内のどの「シート名」のシートから収集してくるかを指定します。
次に、
資料となるエクセルファイルが保存されている「フォルダ」を選択します。
あとは、
「抽出実行」を押せば各資料ファイルからのデータ取り出しを開始します。
結果表示は、
余計な作表はせずに、データの羅列の形式で一覧表示できるようにします。
この抽出データの一覧表につては、コピペやエクセル関数で集計などを行うことが出来るようにします。
データ収集するVBA概要のまとめ
今回から、それぞれのエクセルファイルから、今必要なデータ数値を取り出して一覧表示できるVBAを組み立てて行きます。
特に実務では、度々必要になってくるエクセル作業ではないかと思います。
この記事をお読みいただいたことを機会に、
WebからDLして利用いただくだけではなく、このVBAコードも同時に公開していますので、是非ご自分でチェックしていただければと思います。
作業する人それぞれにやり方が異なる部分でしょうし、「この様にしたい、あのように出来たら」ということも多いかと思います。
プログラムの動きを知っていれば、途中で動かなくなってもVBAコードを修正してリカバーすることができると思います。
これから作成していくエクセルVBAソフトは、
- 収集(抽出)データ項目は1シート当たり5項目
- 収集データの入ったファイルの代表的なものからシート名を自動表示する。
- エクセルファイル内の収集可能シート数は無制限で収集するシートの選択可能
- 収拾作業の収納フォルダーをダイアログで選択できる。
という様にしていきます。
では、次回記事からVBAコードの説明をしていきますのでよろしくお願いします。
次の記事に進むにはこちら↓です。
エクセルファイルからデータ収集。VBA取り出し条件の楽々設定方法
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
エクセルVBAを独学で習得するためのポイントは?良書との出会いは重要
エクセルVBAの独習には動画学習という方法もあります。 目と耳両方を使って学習することでさらに勉強効率を上げることもできると思います。
エクセルVBA初級者がUdemyで動画学習する講座おすすめ5選と無料講座の上手な使い方。
複数ファイルデータ収集VBAの関連記事はこちらです。
業務効率を上げて行くためにエクセルVBAを使いだして、始めのうちに知っておきたい内容を纏めています。
今回の記事はここまでです。 最後までご覧いただき有難うございました。