shikumika’s diary

日々の事務作業で手間なことを簡単にできる仕組み(自動化、方法など)、困ったことの解決方法を調べた備忘録

【Power Query】ファイル名の文字列を検索してリストを集約する事例

Power Queryで複数のファイルを集約するとき、ファイル名の文字列を検索してリストを集約する事例です。Text.Contains関数を活用し、Excelファイルの指定列の値がファイル名に含まれている行だけを抽出します。

内容:

アウトプットイメージ

下図のように、同じリスト形式の様式に入力されたデータについて、A列の値がファイル名に含まれている行だけを集約したリストを作成します。

下図のE店のリストでは、他のA店等にも値が入っています。他のデータが未入力の場合は、単純にフィルターの処理で対応できます。しかし、このようなケースでは、Text.Contains関数を使う方法が有効です。

ファイル名とA列の値が一致する行のみ抽出しています

同じリスト形式の様式に入力されたデータの集約

設定事例

(1)設定前の状態

PowerQueryの「データの取得」でフォルダを指定し、「データの結合と変換」で起動した状態が下図です。各ファイルの全ての行が取得された状態です。

「Source.Name」(ファイル名)に、「店舗名」の値が含まれている行のみ残したい

各ファイルの全ての行が取得された状態
(2)カスタム列の追加

「Source.Name」(ファイル名)に、「店舗名」の値が含まれている行のみ残したいので、「カスタム列」の追加で、以下の数式を設定します。

Text.Contains([Source.Name],[店舗名])

Text.Contains([Source.Name],[店舗名])を設定

ファイル名にA列の値を含むかを判定する数式例
(3)フィルターで抽出

上記手順の結果、TRUEとFALSEの判定がされている列が追加されているので、フィルターでTRUEを抽出します。

TRUEとFALSEの判定がされている

Text.Contains([Source.Name],[店舗名])の結果

抽出の結果、以下となる。あとは不要な列削除等を必要に応じて実施すると冒頭のアウトプットイメージとなります。

ファイル名にA列の値が含まれる行のみ抽出できている

TRUEのみで抽出された結果

以上、Power Queryで複数のファイルを集約するとき、ファイル名の文字列を検索してリストを集約する事例でした。