鷹尾祥(アキラ)のExcel BI ブログ

Excelの革新的機能であるパワーピボット/パワークエリ/DAXについて紹介します。

List型を使った行の動的選択

List型を使った行の動的選択

今回のテーマはList型を使った行の動的選択です。

前回のList型を使ったの動的選択では横軸であるを選択しましたが、今回は縦軸のがテーマとなります。
modernexcel7.hatenablog.com

技術的なポイント

  • 行選択リストの作成
  • List.Contains(行選択リスト, [フィルターされる列]))をTable.SelectRowsに埋め込む

実践

今回は以下のような商品テーブルを取り込む時に、Excelシート上の行選択リストを使って任意の商品カテゴリーを絞り込めるようにします。

f:id:modernexcel7:20200425232028p:plain

行選択リストを用意する

まずは行選択リストを用意します。詳細はすでに前回の記事で紹介しているので、同じ手順で作ってください。

商品カテゴリー選択ワークシートテーブル

f:id:modernexcel7:20200425230513p:plain

商品カテゴリー選択リスト

f:id:modernexcel7:20200425230641p:plain


元表に行フィルターをかける

商品クエリを開き、どの値でもいいので商品カテゴリーの中でフィルターをかけます。今回は菓子でフィルターをかけました。

f:id:modernexcel7:20200425231250p:plain

次に数式バーの式を以下のように書き換えます。

変更前:
= 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

ここまで来たら、閉じて読み込むを実行して結果を確認します。

無事、先ほど作成した商品カテゴリー選択リストの値で、商品テーブルを絞り込むことができました!

f:id:modernexcel7:20200425231425p:plain

他の選択条件にして商品テーブルを再読み込みし、結果を確認してみてください。

f:id:modernexcel7:20200425232623p:plain