【EXCEL:VBA】複数のEXCELデータを1つに集約したい

複数のEXCELデータを1つに集約したい

この記事では、複数のEXCELに入力されているデータを1つに集約する機能について説明しています。

 

同じ形式のデータが大量にある場合に、この機能は使えます。

 

1つ1つEXCELファイルを開いて、行をコピーし、貼り付けして、ファイルを閉じる。次のファイルをまた開いて・・・。

 

地味な作業ですが、大変ですし、ミスをしやすい作業です。

 

そんな大変な作業をこの機能を使えば、ボタン1つで正確に集約することができます。

 

 

それでは、EXCELで複数のデータを1つのデータに集約する機能を作成していきましょう。

 

困っている女性

大量にあるEXCELに入力されているデータを1つに集約作業があるんだけど、地味に大変なの・・・。

困っている女性

集約もれが発生したときなんか、もう大変なの。どのファイルがもれたか探さないといけないの。泣きそうになるわ。
それなら、VBAを使えばもれなく正確に1つに集約することができるよ。

解決する男性

困っている女性

それそれ、早く教えてよ。

 

以下の記事では、似たような作業でEXCELデータを比較したり、差分を抽出する機能について説明しています。

2つのデータを比較したい 【EXCEL:VBA】2つのデータを比較したい

 

2つのデータの差分を抽出したい 【EXCEL:VBA】2つのデータの差分を抽出したい

 

◆似たような作業で、単純に1つのCSVファイルを取り込みする方法については、以下の記事を参照してください。

CSVファイルを取込したい 【EXCEL:VBA】CSVファイルを取り込みたい

 

◆似たような作業で、指定されたフォルダに存在するすべてのCSVファイルを一気に取り込みする方法については、以下の記事を参照してください。

フォルダに存在するCSVファイルを全て取り込みたい 【EXCEL:VBA】フォルダに存在するCSVファイルを全て取り込みたい

 

今回の記事と合わせて、読んでみてください。

 

EXCELで複数のデータを1つのデータに集約する機能に必要なものを、1つ1つ順番に説明していきます。

1.複数のEXCELデータを1つに集約するために必要なシートを作成する

「メイン」シートを作成する

メインシートを追加する

メインシートを追加する

  1. 「メイン」という名前のシートを作成します。
  2. 1行目に「対象フォルダ」、「シート名」、「データ開始行」、「集約開始行」のタイトル行を作成します。
  3. 2行目は「対象フォルダ」、「シート名」、「データ開始行」、「集約開始行」を入力する行となります。

 

「対象フォルダ」には、複数のEXCELファイルが保存されているフォルダパスを入力します。

「シート名」には、集約したいEXCELファイルのシート名を入力します。

「データ開始行」には、集約したEXCELファイルのデータ開始行を入力します。

1行目にタイトル行(ヘッダー行)があり、2行目以降にデータが入力されている場合は、2と入力します。

 

「集約開始行」には、集約したデータを書込みする開始行を入力します。

タイトル行(ヘッダー行)が必要ない場合、1と入力すれば1行目から集約したデータが書込みされます。

タイトル行(ヘッダー行)が必要な場合、2と入力すれば2行目から集約したデータが書込みされます。

 

「集約データ」シートを作成する

集約データシートを追加する

集約データシートを追加する

 

  1. 「集約データ」という名前のシートを作成します。
  2. 1行目には、集約するデータのタイトル行(ヘッダー行)を入力します。

 

タイトル行(ヘッダー行)が必要ない場合、なにも入力しないで良いです。

 

2.複数のEXCELデータを1つに集約する機能を記入する

「Microsoft Visual Basic for Applications」を起動します。

VBAプログラムを記入する(その1)

VBAプログラムを記入する(その1)

 

VBAプログラムを記入する(その2)

VBAプログラムを記入する(その2)

 

標準モジュールを追加して、以下のソースを書きます。

 

3.複数のEXCELデータを1つに集約する機能の使い方

それでは、集約したいEXCELファイルを用意します。

今回のサンプルでは、「従業員番号」、「氏名」の2列のデータにしていますが、

お好きな形式のデータで構いません。

 

集約したいEXCELファイルを1つのフォルダに保存します。

今回のサンプルではファイル3つ用意していますが、必要なだけファイルを保存してください。

集約したいEXCELファイルを1つのフォルダに保存する

集約したいEXCELファイルを1つのフォルダに保存する

 

集約したいEXCELファイルの1つ目は以下です。

集約したいEXCELファイルその1

集約したいEXCELファイルその1

 

集約したいEXCELファイルの2つ目は以下です。

集約したいEXCELファイルその2

集約したいEXCELファイルその2

 

集約したいEXCELファイルの3つ目は以下です。

集約したいEXCELファイルその3

集約したいEXCELファイルその3

 

それでは、今回用意したサンプルのEXCELファイル3つを1つに集約していきます。

「メイン」シートの「対象フォルダ」、「シート名」、「データ開始行」、「集約開始行」を入力します。

次に、「開発」タブの「マクロ」ボタンをクリックします。

マクロボタンをクリックする

マクロボタンをクリックする

 

先程作成した自作関数「MainProc」が一覧に表示されていますので、選択します。

次に、「実行」ボタンをクリックしてデータ集約を開始します。

実行ボタンをクリックする

実行ボタンをクリックする

 

少し待つと、複数のEXCELデータが1つに集約されて、「集約データ」シートに書込みされます。

間違いなく、3つのEXCELファイルのデータが1つに集約されています。

3つのEXCELデータが1つに集約された

3つのEXCELデータが1つに集約された

 

どうですか、簡単でしょ。

もっとたくさんのEXCELファイルでも、同じく簡単ですのでやってみてください。

 

4.複数のEXCELデータを1つに集約するVBAプログラムの説明

それでは、VBAプログラムを説明します。

①「メイン」シートを変数に格納する

ここでは、このあとの処理で使う「メイン」シートを変数に格納しています。

そうすることにより、入力するプログラムを短くすることができるからです。

何度も「ThisWorkbook.Sheets(“メイン”)」と入力するより、「shtMain」と入力するほうが少なくてすむからです。

 

②対象フォルダを変数に格納する

ここでは、「メイン」シートのA2セルに入力されている「対象フォルダ」を変数に格納しています。

 

③シート名を変数に格納する

ここでは、「メイン」シートのB2セルに入力されている「シート名」を変数に格納しています。

 

④データ開始行を変数に格納する

ここでは、「メイン」シートのC2セルに入力されている「データ開始行」を変数に格納しています。

 

⑤集約データ開始行を変数に格納する

ここでは、「メイン」シートのD2セルに入力されている「集約開始行」を変数に格納しています。

 

⑥「集約データ」シートを変数に格納する

ここでは、「集約データ」シートを変数に格納しています。

 

⑦「集約データ」シートの開始行以下をクリアする

ここでは、「集約データ」シートの集約データの開始行以下をクリアしています。

これは、何度も実行しても良いように、データ集約前に前に集約されたデータをクリアしています。

 

⑧FileSystemObjectを変数に格納する

ここでは、FileSystemObjectを変数に格納しています。

FileSystemObjectは、フォルダやファイル操作するときに利用するライブラリです。

 

⑨対象フォルダに存在するファイル数分処理する

ここでは、対象フォルダに存在するファイル数分を対象に処理を繰り返します。

 

⑩ファイルの拡張子を変数に格納する

ここでは、取り出したファイルの拡張子を変数に格納しています。

対象とするファイルをEXCELに絞るために利用します。

 

⑪拡張子が「xlsx」のみ処理を行う

ここでは、先程取り出したファイルの拡張子が「xlsx」が確認しています。

「xlsx」なら、データ集約を実行します。

 

⑫対象ブックを開く

ここでは、取り出したEXCELを開いて変数に格納しています。

 

⑬対象シートを変数に格納する

ここでは、先程開いたEXCELの集約対象のシートを変数に格納しています。

 

⑭対象シートの最終行を取得する

ここでは、先程変数に格納したシートの最終行を変数に格納しています。

最終行を求めておくと、データ集約対象範囲を判別できるからです。

 

⑮対象シートの最終列を取得する

ここでは、先程変数に格納したシートの最終列を変数に格納しています。

最終列を求めておくと、データ集約対象範囲を判別できるからです。

 

⑯対象シートの対象データを集約シートにコピーする

ここでは、集約対象データを「集約データ」シートにコピーしています。

 

⑰次の貼り付け行を計算する

ここでは、「集約データ」シートの次に貼り付けする行を計算しています。

次のコピーの準備をしています。

 

⑱対象ブックを閉じる

ここでは、先程開いたEXCELファイルを閉じています。

 

⑲メモリを解放する

ここでは、メモリを解放しています。

 

それでは、集約したいデータを用意して、1つに集約してみましょう。

 

以上です。

 

最後まで読んでいただきありがとうございました。
この記事をシェアしていただけると喜びます。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です