Power Queryで複数のファイルを集約するとき、ファイル名の文字列を検索してリストを集約する事例です。Text.Contains関数を活用し、Excelファイルの指定列の値がファイル名に含まれている行だけを抽出します。
内容:
アウトプットイメージ
下図のように、同じリスト形式の様式に入力されたデータについて、A列の値がファイル名に含まれている行だけを集約したリストを作成します。
下図のE店のリストでは、他のA店等にも値が入っています。他のデータが未入力の場合は、単純にフィルターの処理で対応できます。しかし、このようなケースでは、Text.Contains関数を使う方法が有効です。
設定事例
(1)設定前の状態
PowerQueryの「データの取得」でフォルダを指定し、「データの結合と変換」で起動した状態が下図です。各ファイルの全ての行が取得された状態です。
(2)カスタム列の追加
「Source.Name」(ファイル名)に、「店舗名」の値が含まれている行のみ残したいので、「カスタム列」の追加で、以下の数式を設定します。
Text.Contains([Source.Name],[店舗名])
(3)フィルターで抽出
上記手順の結果、TRUEとFALSEの判定がされている列が追加されているので、フィルターでTRUEを抽出します。
抽出の結果、以下となる。あとは不要な列削除等を必要に応じて実施すると冒頭のアウトプットイメージとなります。
以上、Power Queryで複数のファイルを集約するとき、ファイル名の文字列を検索してリストを集約する事例でした。