Power Query(パワークエリ)でデータソースとして読み込むファイルやシートをセル入力値により可変設定する方法を紹介します。こちらでは元データがエクセルファイルの場合の手順を解説しています。
セル入力値で読み込むファイルを指定する方法
セル入力値で読み込むシートを指定する手順は以下の3ステップです。
- ファイルパス入力用のテーブル(セル)を作成する
- テーブル入力値をクエリ設定用に変換する
- ファイルを読み込むクエリを作成する
- クエリのソースステップの数式を変更してセル入力値を適用する
下図のデータを使用して設定手順を解説します。データソースとして「データA」「データB」「データC」の3個のエクセルファイルを準備しています。
まずはファイルパスを入力するためのテーブルを一つ作成します。
- エクセルファイル上に列名とファイルパスを入力して範囲選択する。
- 挿入タブから「テーブル」を選択する。
- 「先頭行をテーブルの見出しとして使用する」にチェックを入れてOKをクリックする。
テーブル作成後は任意でテーブル名を必要に応じて設定してください。そのままでも問題ないです。
まずはテーブルからクエリを作成します。
- 作成したテーブルを選択する。
- データタブの「データの取得と変換」から「テーブルまたは範囲から」を選択する。
Power Query エディターでテーブルを右クリックして「ドリルダウン」を選択する。
設定が完了したら、ホームタブの「閉じて読み込む」をクリックして設定を保存します。
次にファイルを読み込みます。
データタブの「データの取得」 > 「ファイルから」 >「ブックから」をクリックして 読み込むファイルを選択する。準備したファイルの内、読み込むファイルはどれでもOKです。
ここでは、データAのファイルを読み込んでいます。
セル入力値をファイル読み込みのクエリに適用させます。
- 適用したステップにある「ソース」を選択する。
- 数式バーのファイルパス部を作成したファイルパス名に書き換えます。ここでは「ファイルパス」に置き換えていますが 左側に表示されている名前に置き換えてください。
下記のエラーが発生する場合は後述するエラー対処を試してみてください。
以上で設定は完了です。ファイルパスを変更すると、読み込むファイルがが変わり値も変わっているのが確認できます。
データソースのテーブル構成が変わるとエラーが発生する可能性がありますので注意してください。「列名」が変わりエラーが出ている場合は、ステップ内にある「昇格されたヘッダー数」を削除すればエラーが回避できる可能性がありますので試してみてください。
Sponsored link
セル入力値で読み込むシートを指定する方法
セル入力値で読み込むシートを指定する手順は以下の3ステップです。
- シート名入力用のテーブル(セル)を作成する
- テーブル入力値をクエリ設定用に変換する
- ファイルを読み込むクエリを作成する
- クエリのナビゲーションの数式を変更してセル入力値を適用する
今回は「A」「B」「C」の複数シートがあるエクセルファイル「DATA.xlsx」を元データとします。このファイルを用いて読み込みシートをセル入力値により切り替えられるように設定していきます。
まずは入力用のセルを用意するためにテーブルを一つ作成します。下図では列名をSheetとしていますが任意で設定してください。
- クエリを作成するエクセルファイル上に 列名 と指定するシート名 を入力して範囲選択する。
- 挿入タブから「テーブル」を選択する。
- 「先頭行をテーブルの見出しとして使用する」にチェックを入れてOKをクリックする。
テーブル作成後は任意でテーブル名を必要に応じて設定してください。そのままでも問題ないです。
まずはクエリを作成します。
- 作成したテーブルを選択する。
- データタブの「データの取得と変換」から「テーブルまたは範囲から」を選択する。
Power Query エディターでテーブルを右クリックして「ドリルダウン」を選択する。これで他のクエリからこのセルに入力された値を参照できるようになります。
設定が完了したら、ホームタブの「閉じて読み込む」をクリックして設定を保存します。
次に実際にファイルを読み込みます。
データタブの「データの取得」 > 「ファイルから」 >「ブックから」をクリックして 読み込みファイル名を選択する。
ナビゲーターではどれでも良いので一つシートを選択して「データの変換」をクリックする。
これでデータの読み込みは完了です。
セル入力値をファイル読み込みのクエリに適用させます。
- 適用したステップにある「ナビゲーション」を選択する。
- 入力欄のItemの設定値を「入力セル用クエリの名前」に置き換えます。下図では「読み込みシート名」に置き換えていますが 左側に表示されているクエリ名を確認して任意の名前で置き換えてください。
以上で設定は完了です。入力用セルの値をA→B→Cと変更するとクエリで読み込むシートが変わり、値も変わっているのが確認できます。
データソースのテーブル構成が変わるとエラーが発生する可能性がありますので注意してください。「列名」が変わりエラーが出ている場合は、ステップ内にある「昇格されたヘッダー数」を削除すればエラーが回避できる可能性がありますので試してみてください。
セル入力値で読み込みシートを変更できるようにすることでメンテナンス性の向上やイレギュラーな変更に対しても対応しやすくなりますので是非参考にしてみてください。
Sponsored link
エラーの対処方法
ファイルパスを動的設定すると下記のエラーが発生することがあります。
クエリは他のクエリまたはステップを参照しているため、データ ソースに直接アクセスできません。
その場合は、プライバシーレベルの設定を下記の手順で変更するとエラーを回避できます。
「ファイル」→「オプションと設定」→「クエリのオプション」を選択する。
「現在のブック」→「プライバシーレベル」→「プライバシーレベルを無視すると、パフォーマンスが向上する場合があります」にチェックをしてOKをクリックする。
Sponsored link
まとめ
今回は、データソースをセル入力値を用いて可変に設定する方法を紹介しました。手順は以下の通りです。
- ファイルパスまたはシート名を入力するテーブル(セル)を作成する
- テーブル入力値をクエリ設定用に変換する
- ファイルを読み込むクエリを作成する
- クエリのソースステップまたはナビゲーションステップの数式を変更してセル入力値を適用する
パワークエリの学習本についてはコチラの記事でまとめてますので参考にしてみてください。
・初心者向けおすすめ学習本
・初中級者向けおすすめ学習本
コメント