List型を使った行の動的選択
今回のテーマはList型を使った行の動的選択です。
前回のList型を使った列の動的選択では横軸である列を選択しましたが、今回は縦軸の行がテーマとなります。
modernexcel7.hatenablog.com
技術的なポイント
- 行選択リストの作成
- List.Contains(行選択リスト, [フィルターされる列]))をTable.SelectRowsに埋め込む
実践
今回は以下のような商品テーブルを取り込む時に、Excelシート上の行選択リストを使って任意の商品カテゴリーを絞り込めるようにします。
行選択リストを用意する
まずは行選択リストを用意します。詳細はすでに前回の記事で紹介しているので、同じ手順で作ってください。
商品カテゴリー選択ワークシートテーブル
商品カテゴリー選択リスト
元表に行フィルターをかける
商品クエリを開き、どの値でもいいので商品カテゴリーの中でフィルターをかけます。今回は菓子でフィルターをかけました。
次に数式バーの式を以下のように書き換えます。
変更前:
= Table.SelectRows(変更された型, each ([商品カテゴリー] = "菓子"))
変更後:
= Table.SelectRows(変更された型, each List.Contains(商品カテゴリー選択, [商品カテゴリー]))
ここで登場したList.Contains関数は第1引数としてリストを受け取り、第2引数の値がそのリストの中にあればtrueを、なければfalseを返します。
つまり、商品クエリのテーブルの1行1行に対して、商品カテゴリーの値が商品カテゴリー選択 リストに含まれる場合はtrueを返し、その結果が Table.SelectRows関数に渡され、行の取捨選択が行われています。
List.Contains - PowerQuery M | Microsoft Docs
ここまで来たら、閉じて読み込むを実行して結果を確認します。
無事、先ほど作成した商品カテゴリー選択リストの値で、商品テーブルを絞り込むことができました!
他の選択条件にして商品テーブルを再読み込みし、結果を確認してみてください。