特定のフォルダーに毎月Excelブックを格納していく運用していますが、定期的に各月のブックを集約するのが大変です・・・。
こうした場合もPower Queryで自動化できますか?
その場合、Power Query(パワークエリ)の「フォルダーから」でデータ取得から始めると良いですよ!
具体的な手順を解説していきますね。
解説動画:【パワークエリ#5】フォルダーを対象としたデータインポート手順 – フォルダー内の複数データ(シート/テーブル)を自動で一括取得する
この記事の内容は下記の動画でも解説しています。
はじめに
本題に入る前に、この記事がおすすめな方を挙げてみます。
- フォルダー内の複数ファイルのテーブル/シートをまとめて整形・加工したい方
- データ整形・加工の工程が複数あり、かつその作業が定期的に発生する方
- Power Query(パワークエリ)の使い方を習得したい方
前提条件
この記事のテクニックを使うためには、以下の条件を満たす必要があります。
- ExcelのバージョンはExcel2010以降(Microsoft365含む)が必須
- Excel2010/2013ユーザーの場合、事前にMicrosoft社公式HPよりPower Query(パワークエリ)のダウンロードが必要(Excel2016以降は標準機能)
- Power Query(パワークエリ)の概要を理解していること
→まず、以下の記事で概要を把握することをおすすめします。
解説動画:【パワークエリ#1】「パワークエリ(Power Query)」とはどんな機能か?大枠の流れや手順、使い方まとめ この記事の内容は下記の動画でも解説しています。 コメント欄の各プロセスの時間部分をクリックすると該 …
データ整形の元データ(テーブル/シート)がフォルダー内の複数ファイルに分かれている場合に「フォルダーから」のデータ取得が有効
次のように、実務では特定フォルダー内に期間別(年・月・週・日など)や部署別などで別ファイルに分けて管理するケースはよくありますね。
上記のように、分けて管理していたファイルをまとめた上でデータ整形したい場合、従来は「1つ1つファイルを開いて、そのテーブル/シートの数だけExcelへコピペ」を繰り返す必要がありました。
しかし、Power Query(パワークエリ)ならこうした複数ファイルの表データの取り込みをまとめて自動化できます。
では、フォルダー内の複数ファイルのデータ取得手順を確認していきましょう。
フォルダー内の複数ファイルの取得手順
Power Query(パワークエリ)によるフォルダー内の複数ファイルのデータ取得は、以下の9ステップとなります。
【STEP1】リボン「データ」タブから「データの取り込み」ダイアログを起動
まずは、リボン「データ」タブをクリック(①)し、「データの取得」をクリック(②)します。
そして、「ファイルから」をクリック(③)の上、「フォルダーから」をクリック(④)しましょう。
【STEP2】取り込み先のフォルダーパスを指定
「フォルダー」ダイアログが起動しますので、「参照」をクリック(⑤)してください。
すると、「参照」ダイアログが起動しますので、データの取得元となるフォルダーを選択(⑥)し、「開く」をクリック(⑦)します。
すると、フォルダーパスが入力された状態で「フォルダー」ダイアログに戻りますので、あとは「OK」をクリック(⑧)すればOKです。
なお、今回は「社員マスタ」フォルダーを選択しました。
【STEP3】フォルダーパスの画面から、「Fileの結合」画面を起動
手順⑥で指定したフォルダーパスが表示された画面が起動します。
指定したフォルダー内のファイルが一覧で表示されます。
「結合」をクリック(⑨)し、「データの結合と変換」をクリック(⑩)しましょう。
【STEP4】「Fileの結合」画面からPower Queryエディターを起動
「Fileの結合」画面が起動します。
ここでフォルダーのアイコンの「パラメーター1」を選択(⑪)し、「OK」をクリック(⑫)します。
【STEP5】取り込みたいテーブル/シートをフィルターで指定
Power Queryエディターが起動します。
すると、指定したフォルダー内にあるすべてのシートとテーブルの情報が「プレビュー」ウィンドウにレコード化されています。
まず行うのは、取り込みたいテーブル/シートをフィルターで指定(⑬)することです。
今回はシートとテーブルで表データが重複しているため、「Kind」列を「Table」のみでフィルターをかけました。
このフィルター条件は、対象ファイルや作業目的によって異なりますので、ケースバイケースで指定してくださいね。
なお、クエリ名は手順⑥で指定したフォルダー名になっているため、別名称が良ければ「クエリの設定」ウィンドウ上でクエリ名を書き換えましょう。
Power Queryエディター上のフィルター操作はこちらの記事も参考にしてみてください。
はじめに 本題に入る前に、この記事がおすすめな方を挙げてみます。 表の中の不要なレコードの削除を自動化したい方 …
指定したフォルダー内で新たに増やしたファイルも自動的に取り込む対象にしたい場合、フィルター設定に気をつけましょう。
「Kind」列だけなら心配ないですが、「Name」列などで選択する際はチェックボックスでフィルター設定せず、テキストフィルターを使うことをおすすめします。
理由は、チェックボックスだと「指定の値と等しい」という条件となり、増やしたファイルが含まれない可能性があるためです。
よって、テキストフィルターで「指定の値を含む」「指定の値で始まる」などの条件にして、増やしたファイルも含まれる条件にしておきましょう。
【STEP6】「Data」列を展開
取り込みたいテーブル/シートを選択できたら、「Data」列のボタンをクリック(⑭)します。
これで、指定したテーブル/シートから取り込む列を選択できます。
あとは、取り込みたい列を選択(⑮)し、「元の列名をプレフィックスとして使用します」のチェックを外す(⑯)ことまで完了したら「OK」ボタンをクリック(⑰)してください。
手順⑮はSTEP5で指定したテーブル/シートに含まれる列がすべて表示されます。(表ごとに列名が異なる場合含む)
手順⑯のチェックを付けておくと、列名の頭に「Data.」が付加されてしまいます。
例)プレフィックスとして使用した場合:「Data.社員番号」
【STEP7】展開した列のデータ型の変更と不要な列を削除
展開した列のデータ型は「すべて」になっているため、各列のデータに適したデータ型へ変更(⑱)しましょう。
今回は「社員番号」「氏名」のデータ型は「テキスト」、「入社日」のデータ型は「日付」に変更します。
あとは、不要な列を削除(⑲)しておきましょう。
今回はSTEP6で展開した列以外は不要なので削除します。
その他、データ整形・加工を行いたい方は、ここで任意の作業を順次設定してくださいね。
データ型の変更についてはこちらの記事も参考にしてみてください。
はじめに 本題に入る前に、この記事がおすすめな方を挙げてみます。 データ型の変更を自動化したい方 データ整形・ …
列の削除についてはこちらの記事も参考にしてみてください。
はじめに 本題に入る前に、この記事がおすすめな方を挙げてみます。 不要な列の削除を自動化したい方 データ整形・ …
【STEP8】「Power Queryエディター」を閉じてデータを読み込み
すべての作業を設定できたら、最後に「閉じて読み込む」をクリック(⑳)し、「閉じて次を読み込む」をクリック(㉑)すればOKです。
【STEP9】「データのインポート」ダイアログでデータの返し先を選択
「データのインポート」ダイアログが起動しますので、どこにデータを返すかを指定(㉒)しましょう。
今回は、既存ワークシートのA1セルを起点にデータを返すように設定しました。
設定が完了次第、「OK」ボタンをクリック(㉓)します。
これにて作業は完了です!
ワークシート上に指定ファイルのデータが取り込まれればOK!
無事A1セルを起点に指定したフォルダー内の複数ファイルのデータが取り込まれました!
そして、ワークシートの右側に「クエリと接続」ウィンドウが表示されます。
そのウィンドウ上に「社員マスタ」というクエリが作成されていることがわかりますね。
なお、クエリ名の下を見ると、9行のデータが読み込まれたことがわかります。
「社員マスタ」クエリの上にそれ以外のクエリも作成されています。
これは、「社員マスタ」クエリを作成する過程で自動的に作成されるものですので、削除しないようにご注意ください。
サンプルファイルで練習しよう!
可能であれば、以下のサンプルファイルをダウンロードして、実際に操作練習をしてみてください。
サンプルファイル_PowerQueryデータ取得_フォルダーから.zip
※サンプルファイルのダウンロードには無料メルマガに登録いただく必要があります。
(上記リンクから登録フォームへ遷移します)
ファイルを開いたら、次の手順を実施してください。(今までの解説のまとめです)
- リボン「データ」タブをクリック
- 「データの取得」をクリック
- 「ファイルから」をクリック
- 「フォルダーから」をクリック
- 「参照」をクリック
- データの取得元となるフォルダーを選択
- 「開く」をクリック
- 「OK」をクリック
- 「結合」をクリック
- 「データの結合と変換」をクリック
- フォルダーのアイコンの「パラメーター1」を選択
- 「OK」をクリック
- 取り込みたいテーブル/シートをフィルターで指定
- 「Data」列のボタンをクリック
- 取り込みたい列を選択
- 「元の列名をプレフィックスとして使用します」のチェックを外す
- 「OK」ボタンをクリック
- 各列のデータに適したデータ型へ変更
- 不要な列を削除
- 「閉じて読み込む」をクリック
- 「閉じて次を読み込む」をクリック
- データの返し先を既存ワークシートのA1セル設定
- 「OK」ボタンをクリック
本記事の解説と同じ結果になればOKです!
さいごに
いかがでしたでしょうか?
本テクニックはPower Query(パワークエリ)のデータ取得の中では応用に当たる範囲なので、少々難易度が上がります。
フォルダー内の複数ファイルをまとめて整形・加工したい方はぜひチャレンジしてみてください。
ちなみに、このテクニックは各ファイルが同じ表形式(列の構成)の場合が前提です。
別な表形式(列の構成)のものが混在しないようご注意ください。
なお、Power Query(パワークエリ)の各種テクニックは、私の拙著でも体系的に解説していますので、こちらも参考にしてみてください。
また、よりコアな情報を発信していくために「公式LINE」を開始しましたので、ご興味があれば以下バナーから友だち追加をお願いします!
特典として、Excelワークシート関数一覧(計22スライド)やExcelショートカットキー一覧(計25スライド)等をプレゼント!
ご参考になれば幸いですm(_ _)m
フォルダー内の複数ファイルの取り込みを自動化するには、従来はマクロ(VBA)が必須でした。
なので、プログラミングが必要なので挫折する人も多かったですが、Power Query(パワークエリ)ならマウス操作中心で自動化できるのが素敵ですね!
複数ファイルの集約する作業の頻度が高い人は、ぜひマスターしてくださいね。