パワークエリで別ブックの複数の表データを対象に整形したいですが、何のコマンドでデータを取得すれば良いですか?
その場合、「Excelブックから」コマンドでデータ取得できますよ!
では、詳細を解説していきますね。
解説動画:【パワークエリ#4】別ブックを対象としたデータインポート手順 – 他のExcelブック内の単一または複数データ(シート/テーブル)を自動取得する
この記事の内容は下記の動画でも解説しています。
コメント欄の各プロセスの時間部分をクリックすると該当の解説へジャンプできますよ!
はじめに
この記事はパワークエリの概要を把握していることが前提です。
パワークエリの概要については、以下の記事をご参照ください。
この記事は、Excelでパワークエリ(Power Query)を使いたい方向けに、パワークエリの活用ノウハウをExcel本著者が解説。パワークエリの使用イメージ・できること・クエリの新規作成ステップ等を網羅。豊富な図解を用意しています。
「Excelブックから」の使いどころ
「Excelブックから」コマンドは、クエリの新規作成ステップのうち、STEP1の「データソースを取得/収集(Extract)」に該当する機能です。
継続的に更新/蓄積される表データが、クエリを記録するExcelブックと別ブックのテーブルまたはシートの場合、「Excelブックから」コマンドを使いましょう。
「Excelブックから」コマンドを活用することで、別ブック内のテーブル/シートをクエリのデータソースに指定できます。
なお、別ブック内に複数のテーブル/シートがある場合、取得する表データは単一/複数を自由に設定することが可能です。
本記事では、「Excelブックから」コマンドで複数の表データを取得するノウハウについて解説します。
複数の表データは同じ列構成であることが前提。
「Excelブックから」コマンドでの単一の表データの取得するノウハウについては、以下の記事をご参照ください。
解説動画:【パワークエリ】別ブックを対象としたデータインポート手順 - 他のExcelブック内の単一または複数 …
使用イメージ
「社員マスタ.xlsx」を対象に「Excelブックから」コマンドを使用したイメージが以下です。
Power Queryエディター上で別ブック内の複数の表データ(「社員マスタ.xlsx」の「社員マスタ_2019」テーブルと「社員マスタ_2020」テーブル)を取得できました。
「Excelブックから」コマンドで複数の表データを取得した場合、デフォルトのクエリ名はブック名になる(「社員マスタ.xlsx」等)。
後は、クエリ新規作成ステップのSTEP2とSTEP3を行いましょう。
すべての列のデータ型が指定されていないため、最低限データ型を指定するステップは必要。
これにより、データソースにした別ブックのテーブル/シートに更新があっても、クエリに記録したステップを自動化できます。
別ブック内にテーブル/シートが増えた場合もデータ取得対象になる。
クエリの新規作成ステップのSTEP2に役立つ各種コマンドの詳細は「パワークエリ(Power Query)の記事一覧」を、STEP3の手順はパワークエリの概要記事をご参照ください。
パワークエリ(Power Query)に関してのコンテンツです。
この記事は、Excelでパワークエリ(Power Query)を使いたい方向けに、パワークエリの活用ノウハウをExcel本著者が解説。パワークエリの使用イメージ・できること・クエリの新規作成ステップ等を網羅。豊富な図解を用意しています。
複数データの取得手順
別ブックの複数の表データ(テーブルまたはシート)をクエリのデータソースにしたい場合は、以下の手順となります。
- リボン「データ」タブをクリック
- 「データの取得」をクリック
- 「ファイルから」をクリック
- 「Excelブックから」をクリック
- データソースにしたいExcelブックを選択
※今回は「社員マスタ.xlsx」 - 「インポート」をクリック
- ブック名を選択
※今回は「社員マスタ.xlsx」 - 「データの変換」をクリック
- 取得したいテーブル/シートが表示されるフィルター条件を設定
※今回は「Kind」列の「Table」のみチェックON(「Table」に等しい) - 「Data」列を選択
- 選択列上で右クリック
- 「他の列の削除」をクリック
- 「展開」ボタンをクリック
- 取得したいフィールドを選択
※今回はすべての列のチェックON - 「元の列名をプレフィックスとして使用します」のチェックをOFF
- 「OK」をクリック
手順⑥は、手順⑤のファイル名をダブルクリックでもOK。
手順⑨は、指定ブック内にテーブルがある場合、同じ表でテーブル名とシート名の両方で表示されるが、基本的にはテーブル名の方を選択することがおすすめ(詳細は後述)。
手順⑩は、「Data」列以外に残したい列があれば、その列も選択すること。
手順⑮でチェックONにした場合、列名の頭に「Data.」が付加されてしまう(例:「Data.社員番号」等)。
【参考】ナビゲーター画面のテーブル名/シート名の見分け方
ナビゲーター画面上でのテーブル名とシート名の見分け方は、アイコンの形で判断しましょう。
- テーブル:アイコンの上部に色が付いているもの
- シート:アイコンの下部にタブがあるもの
フォルダーのアイコンはブック全体を示す。
なお、ナビゲーター画面を含むPower Queryエディター上で同一データのテーブル/シートが両方表示されている場合、テーブル名の方を選択すると良いです。
理由は、シート名の方だとレコードの下側の空白行まで一緒にデータ取得してしまい、Power Queryエディター上で余計な空白行を削除するといった余計な一手間が発生する場合があるからです。
もちろん、指定ブック内にテーブルが存在しない場合は、シートだけが表示されるため、その場合はシート名を選択しましょう。
ちなみに、今回の「商品マスタ」のように、テーブル名とシート名が同じ場合、名前の重複を避けるために、ナビゲーター画面上ではテーブル名の方に数値が付加される仕様です。
例:「商品マスタ1」。
【注意】「Excelブックから」コマンドの使用時、データソースのブックは開かないこと
「Excelブックから」コマンドの注意点として、前述のデータ取得手順を実行する際、手順⑤に指定するExcelブックは開いておかないでください。
該当のExcelブックを開いた状態でデータ取得手順を実行した場合、以下のエラーメッセージが表示され、Power Queryエディターへ画面遷移できません。
接続できません
接続しようとしているときにエラーが発生しました。
詳細:”別のプロセスで使用されているため、プロセスはファイル’フォルダーパス\ブック名’にアクセスできません。”
このエラーメッセージが表示された場合の対処法は以下の通りです。
- 自分が該当ブックを開いている場合:
上記エラーメッセージの「キャンセル」ボタン押下→該当ブックを閉じる→再度データ取得手順をやり直し - 第三者が該当ブックを開いている場合(共有フォルダー配下等):
第三者に該当ブックを閉じてもらう→上記エラーメッセージの「再試行」ボタン押下
自分が該当ブックを開いている場合、エラーメッセージ表示中の状態で該当ブックを閉じることができない場合あり。
サンプルファイルで練習しよう!
可能であれば、以下のサンプルファイルをダウンロードして、実際に操作練習をしてみてください。
サンプルファイル_PowerQueryデータ取得_ブックから(複数).zip
サンプルファイルのダウンロードには無料メルマガに登録いただく必要があります(上記リンクから登録フォームへ遷移します)。
ブックを開いたら、次の手順を実施してください(今までの解説のまとめです)。
- リボン「データ」タブをクリック
- 「データの取得」をクリック
- 「ファイルから」をクリック
- 「Excelブックから」をクリック
- データソースにしたいExcelブックを選択
※今回は「社員マスタ.xlsx」 - 「インポート」をクリック
- ブック名を選択
※今回は「社員マスタ.xlsx」 - 「データの変換」をクリック
- 取得したいテーブル/シートが表示されるフィルター条件を設定
※今回は「Kind」列の「Table」のみチェックON(「Table」に等しい) - 「Data」列を選択
- 選択列上で右クリック
- 「他の列の削除」をクリック
- 「展開」ボタンをクリック
- 取得したいフィールドを選択
※今回はすべての列のチェックON - 「元の列名をプレフィックスとして使用します」のチェックをOFF
- 「OK」をクリック
本記事の解説と同じ結果になればOKです!
さいごに
いかがでしたでしょうか?
「Excelブックから」は、別ブック内のテーブル/シートをクエリのデータソースに指定できます。
別ブック内の複数の表データを取得するテクニックは、STEP1の「データソースを取得/収集(Extract)」の中でも応用テクニックですが、実務で活用する頻度は高めなので、ぜひチャレンジしてみてください!
なお、パワークエリの各種テクニックは、私の拙著でも体系的に解説していますので、こちらも参考にしてみてください。
また、よりコアな情報を発信していくために「公式LINE」を開始しましたので、ご興味があれば以下バナーから友だち追加をお願いします!
特典として、Excelワークシート関数一覧(計22スライド)やExcelショートカットキー一覧(計25スライド)等をプレゼント!
ご参考になれば幸いですm(_ _)m
複数の表データの取得を自動化する場合、従来はマクロ(VBA)が必須でした。
それが、パワークエリだとクリック操作メインで簡単に自動化できるのが素敵ですね!
複数の表データを取得できるのは、「Excelブックから」コマンド以外にも「フォルダーから」コマンドも含まれるため、セットで覚えておきましょう。