Power Queryにおいて
- ユーザーにファイルを選択させる機能を付けたい
と思ったことはないでしょうか?
VBAであればファイル選択ダイアログなどで実装が可能ですが、Power Queryはあらかじめ決められた処理を実行する為ユーザーに選択させることは困難です。
ただクエリのマージ機能を応用することでユーザーにファイルを選択させることができます。
今回はその方法について説明します。
Power Queryに関してどの書籍を買ったらいいの?と思われている方には以下がお勧めです。簡単なボタン操作から、関数を使った処理まで、サンプルデータを一式操作してみるだけでPower Queryが使えるようになります。購入して間違いのないお勧めの一冊です。
とりあえず標準機能だけでも使いこなせるようになりたいと思われている方には以下がお勧めです。関数などの難しい記載はほとんどなくボタン操作のみでPower Queryを扱えるようになります。
実際に合った話
Power Queryでユーザーにファイルを選択させたいんだけど・・・
何故そんなことが必要なんですか?
毎月ファイル名を変えて更新されるファイルがあるんだけど取得がうまくいかないんだ。
それはどうしてですか?
ファイル名が規則通り書かれていなかったりするんだよ。ファイルの最新日でとろうとしても前のファイルいじっている人もいるし。
なるほど。ある程度はルール化で改善できますが、間違いや不特定多数の人の操作では改善もできませんね。
ファイル名と更新日を見ればどのファイルを取ればいいかはわかるから、その情報をもとにファイルを取りたいんだけど。
なるほど、その場合はファイルの一覧を表示させてその中にあるファイル名をユーザーに選択させることで必要なファイルの情報を表示させることができます。今回はその方法でやってみましょう。
よろしくお願いします!
今回の方法
今回は以下の手順で行います。
- フォルダ内にあるファイル一覧を取得するクエリを作成する
- フォルダ内からファイルを選択させるテーブルを作成し、クエリに取り込む
- クエリのマージを行う
以下で1つ1つ説明します。
なお今回は以下のフォルダ内の「220501.xlsx」ファイルを取得することを想定します(oldとかあったりして面倒ですね)
フォルダ内にあるファイル一覧を取得するクエリを作成する
1 空のExcelファイルを開きます
2 「データ」-「データの取得」-「ファイルから(F)」-「フォルダーから」を選択する
3 ファイルが保存されるフォルダを選択する(ここでは「ファイルの選択によるデータの取り込み」フォルダとしています)
4 クエリ名を適当につけて保存して閉じる(ここでは「フォルダ内のファイル一覧」としています)
結果として以下のテーブルが得られます。
フォルダ内からファイルを選択させる為のテーブルを作成し、クエリに取り込む
1 新規ワークシートを作成します
2 以下のテーブルを作成します
3 入力セルに対して「データ」-「データの入力規則」-入力規則の種類「リスト」-元の値「(先ほど表示させたファイル一覧の列)」を選択し「OK」をクリック
4 「データ」-「テーブルまたは範囲から」でテーブルを取り込む
5 クエリ名を適当につけて接続専用として閉じる(ここでは「選択ファイル」としています)
クエリのマージを行う
1 「Power Queryエディター」を開く
2 「ホーム」-「クエリのマージ」-「新規としてクエリをマージ」を選択する
3 上にはファイル一覧のクエリ、下には選択ファイルのクエリをセットし、称号列を「Name」とする。結合の種類を「内部」とする
これでユーザーが選択したファイルのみの情報が得られます。
あとはこれまでと同様にファイルに対する処理を記録していけばOKです。
今回はBinaryデータを展開し、テーブルとして表示させています。
今回のまとめ
今回は横に並んだ表について
- クエリのマージ機能を利用してユーザーにファイルを選択させる
方法について説明しました。
クエリのマージについては以下の書籍に詳しく記載されていますので是非読んでみてください。サンプルデータを一式操作してみるだけでPower Queryが使えるようになります。購入して間違いのないお勧めの一冊です。
とりあえず標準機能だけでも使いこなせるようになりたいと思われている方には以下がお勧めです。関数などの難しい記載はほとんどなくボタン操作のみでPower Queryを扱えるようになります。
コメント