指定したフォルダーのテーブルを結合して 1 つにまとめる

こんな風に↓フォルダーに保存されているファイルの中のテーブルを

S01.png

S02.png

こんな風に↓ 1 つにまとめることができる機能のお話です。
S03.png
 

これだけシンプルでファイルが 3 つしかないのならコピー&ペーストで 1 つにまとめても大した作業量ではないのですが。
元のファイルの値が変わることに対応したいなとか、あとからファイルが増えるかもしれないし、なんていうときにも使えるように、先を見据えて使えるテーブルを、機能を使って作ってみます。

今回は Excel 2016 (正確には Office 365 ProPlus の 2018年6月時点の最新の Excel) で行う手順をご紹介します。
 

テーブルの結合

  1. 新しいブックを用意し、ワークシートの任意の位置にアクティブ セルをおいて、リボンの [データ] タブの [データの取得と変換] グループの [データの取得] をクリックし、[ファイルから] の [フォルダーから] をクリックします。
    S04.png
     
  2. [フォルダー] ウィンドウの [参照] をクリックして、結合したいファイルが保存されているフォルダーのパスを指定して [OK] をクリックします。
    S05.png
     
  3. ウィンドウに指定したフォルダーに格納されているファイルの内容が表示されます。

    (いろいろやり方はあるけれど) [結合] をクリックして [結合および読み込み] をクリックします。
    S06.png
     
  4. [ファイルの結合] ウィンドウに、指定したフォルダーに格納されているファイルにどのようなコンテンツが含まれているのかが表示されます。

    [ファイルの例] でプレビューを表示するファイルを選択し、結合したいコンテンツの単位 (テーブル名やシート名) を選択すると、プレビューが表示されます。

    ここでは、3 つのブックにあるテーブル (TableA) を結合するため、ウィンドウの左側で「TableA」を選択して [OK] をクリックします。
    S07.png
     
  5. (クエリが定義され、その結果として新しいワークシートに) 3 つのテーブルを結合した結果が読み込まれて表示されます。

    [クエリと接続] ウィンドウに、どのクエリをもとにいくつのレコード (行) 読み込まれたのかが表示されています。
    今回は読み込みを行うときに編集をして手を加えていないので、[Source.Name] フィールドにファイル名が表示されています。
    S08.png
     
  6. (特別な意味はないけれど) テーブルのスタイルを変更してテーマのフォントを変更し、ブックに「集計用データ」という名前を付けて保存しました。
    S09.png
     
  7. 次回このファイルを開くと、図のように外部データへの接続に関する警告が表示されます。
    (もちろん安全なファイルであるという前提で) クエリを使ってデータの更新などを行う場合は [コンテンツの有効化] をクリックします。
    S10.png
     

フォルダーへのファイルの追加とテーブルの更新

フォルダー内のファイルの値を変更したり、フォルダーに同じスキーマ (構造) のブックを追加したりすると、[更新] によって結合したテーブルも更新できます。
 

  1. ここでは、「Files」フォルダーに TableA という名前のテーブルを含む File4.xlsx を追加しています。
    S11.png
     
  2. 結合したテーブルのブックを開き、リボンの [データ] タブの [クエリと接続] グループの [すべて更新] をクリックします。
    S12.png
     
  3. 更新が実行され、結合結果のテーブルに、フォルダーに追加した File4.xlsx の TableA の値が追加されます。
    S13.png

 

おまけ

このテーブルに表示されているのはクエリによる処理の結果なので、リボンに [クエリ] ツールも表示されます。
[クエリ] ツールの [クエリ] タブの [編集] グループの [編集] をクリックすると、Power Query エディターが起動します。

S14.png

今回の一連の操作によって行った定義は、「Files」というクエリとして設定、保存されています。
“クエリ” は、簡単にいうと、指定したデータ ソースから必要なデータを取り出したり加工したりするための処理だとしましょう。

今回の場合は、「Files」というフォルダーに格納されている TableA」というデータ ソースから、値をインポートして 1 つのテーブルとして結合 (して処理の過程で不要な列を削除するなどの処理) を行いました。

この作業の流れがステップとして「Files」というクエリに定義されています。
(Power Query エディターは、確認が終わったら閉じます。) 
S15.png


 


クエリによる処理の結果としてテーブルを更新できることが、コピー&ペーストによって 1 つにまとめることとの大きな違いですね。

「Source.Name」フィールドはいらないんだけどとか、連番を振りたいとか、あえて元データとの接続を切りたいとか、それぞれいろいろやりたいことはあると思いますが・・・。長くなっちゃうのでまた今度。

クエリの結果がワークシートに表示されるわけだから、編集は Power Query エディターでやればよいし、接続を切りたいのならクエリをブックから削除してしまえばよろしいというのがヒントです。

石田 かのこ