【Power Queryのパラメーターの仕組みを使い、複数のファイルから特定のシートのデータを可変で取得しよう】
Power Queryのフォルダにある複数ファイルから一括でデータを取得する仕組みは驚くほど便利です
この仕組みで大量の転記処理から解放された人も多いのではないでしょうか?
ただこの仕組みには一つだけ問題があります
ファイル内に複数シートがある場合や、シート名が変更になる場合です
今回の記事では、必要に応じてファイル内で取得するシート名を変更できる方法を解説します
今回使用するデータ
今回使用するファイルには次の画像のように複数のシートが入力されています
![](https://analytic-vba.com/wp/wp-content/uploads/2022/01/image-90.png)
このような複数シートがある複数ファイルを一つのフォルダに格納しておきます
![](https://analytic-vba.com/wp/wp-content/uploads/2022/01/image-91.png)
こちらのフォルダを指定して複数ファイルのデータを一括で取得します
ポイント
パラメーター
今回は過去の記事で解説したパラメーターを使用してシート名を指定します
![](https://analytic-vba.com/wp/wp-content/uploads/2022/01/image-87.png)
今回は上の画像にある「sheetName」というパラメーターを作成し、こちらでシート名を可変で指定できるようにします
ダミーの値によるフィルター
こちらも過去記事で紹介した方法です
簡単に可変の値でフィルターをかける方法です
一度、ダミーの値でフィルターをします
![](https://analytic-vba.com/wp/wp-content/uploads/2022/01/image-88.png)
その後、前述のようにフィルターをかけた値に可変にするパラメーターを組み入れます
![](https://analytic-vba.com/wp/wp-content/uploads/2022/01/image-89.png)
不必要な列の削除、および行のフィルター
今回の処理では、不要な列の削除と行のフィルターを行う箇所が随所にでてきます
![](https://analytic-vba.com/wp/wp-content/uploads/2022/01/image-106.png)
フォルダからデータ取得
従来の「フォルダからデータを取得してエディタを開くフロー」と一部違う点があります
![](https://analytic-vba.com/wp/wp-content/uploads/2022/01/image-92.png)
今回は上の画像の箇所ではなく、次の箇所から直接エディタを開き、シート選択のステップは省略します
![](https://analytic-vba.com/wp/wp-content/uploads/2022/01/image-93.png)
データ成型
エディタを開いて「適用したステップ」を確認すると、次の画像のようにステップが1つしかありません
![](https://analytic-vba.com/wp/wp-content/uploads/2022/01/image-94.png)
エディタの中味はというと、次の画像のようにまだファイル内のデータを取得していない状態になっています
![](https://analytic-vba.com/wp/wp-content/uploads/2022/01/image-95-644x126.png)
こここから、カスタム列作成画面でM関数を使用してデータを成型していきます
その前に、不要なファイルや列を削除していきます
~で始まるファイルはフィルター条件を指定して除いておきます
![](https://analytic-vba.com/wp/wp-content/uploads/2022/01/image-98.png)
その後、「Content」「Name」以外の列を削除します
![](https://analytic-vba.com/wp/wp-content/uploads/2022/01/image-99.png)
不要なファイルや列を削除したら、カスタム列作成画面でM関数を使用します
![](https://analytic-vba.com/wp/wp-content/uploads/2022/01/image-100.png)
M関数:Excel.Workbookでファイル内のデータを取得できるようになります
次の画像が上記の「M関数を含むカスタム列」を挿入した後の画面です
![](https://analytic-vba.com/wp/wp-content/uploads/2022/01/image-101.png)
ファイル内のデータを取得した内容を展開できるようになっています
こちらを展開処理します
ただ1回展開処理しても、まだ次の画像のようにデータ成型したと言える状態になっていません
![](https://analytic-vba.com/wp/wp-content/uploads/2022/01/image-102-644x223.png)
ここから再び不要な列を削除した後、データ/Data列を展開処理します
![](https://analytic-vba.com/wp/wp-content/uploads/2022/01/image-103-644x212.png)
ここから、データの1行目をヘッダーにします
![](https://analytic-vba.com/wp/wp-content/uploads/2022/01/image-104.png)
その後は不必要な列は削除し、不必要な行はフィルターしておきましょう
*シート名の列は残しておきましょう
![](https://analytic-vba.com/wp/wp-content/uploads/2022/01/image-105.png)
パラメーターの作成及びシート名でのフィルター処理
ここからはポイントの項で前述したパラメーターを作成します
![](https://analytic-vba.com/wp/wp-content/uploads/2022/01/image-107.png)
上の画像の「新しいパラメーター」をクリックして次の画像の画面を開きます
![](https://analytic-vba.com/wp/wp-content/uploads/2022/01/image-109.png)
現在の値には取得したいシート名を設定します
これでシート名を可変にするパラメーターは作成できました
その後、ダミーの値でシートをフィルターします
![](https://analytic-vba.com/wp/wp-content/uploads/2022/01/image-108.png)
ここで数式バーに注目してください
![](https://analytic-vba.com/wp/wp-content/uploads/2022/01/image-110-644x123.png)
ダミーでフィルターした値が数式の中に組み込まれています
![](https://analytic-vba.com/wp/wp-content/uploads/2022/01/image-111.png)
こちらを設定したパラメーターで置き換えます
![](https://analytic-vba.com/wp/wp-content/uploads/2022/01/image-112.png)
フィルターされたシートがData_202202➡Data_202201に変わりました
![](https://analytic-vba.com/wp/wp-content/uploads/2022/01/image-113.png)
これで処理は終了です
試しにパラメーターの設定値を他の値に変えてみます
![](https://analytic-vba.com/wp/wp-content/uploads/2022/01/d4180ee8dc7f2431a436aca271b8cfa1.gif)
パラメーターの値に合わせてフィルターされるシート名が変更になっています
<まとめ>
今回は複数ファイルの中にある複数シートの中から、特定のシートのデータのみを一括で取得する方法を解説しました
パラメーターとダミーでフィルターを行う仕組みを組み合わせると、意外と簡単にシート名を可変で取得する仕組みが構築できます
ただ、無駄な列の削除や不要な行のフィルター処理が多い点が難点です
この点さえクリアーすれば、一度作成したパラメーターを何度でも使い回せますので、シートの管理がとても楽になります
ぜひ試してみてください