タグ別アーカイブ: 複数範囲

指定した範囲の値を使用してフィルタリング

 今回はM関数を使用して、事前にエクセルシートに記入した複数の値を基にしてフィルタリングを行う方法を解説します

M関数に慣れるきっかけになったら幸いです

今回使用するM関数は「List.Contains」という関数です

ちなみにM言語では、大文字小文字を認識するのでContainsのCの入力には注意が必要となります

今回の使用するデータとやりたいこと

今回使用するデータは、次の画像のデータです

*下の画像では業種IDが4番までしか写っていませんが、実際は12番まであります

上のデータの「業種ID」をいくつかエクセルシート上にフィルタ項目として指定し、指定した業種IDのレコードのみをシートに読み出したいと思います

 上のGIF画像では、事前に「2」「4」をシートに読込んである状態から、フィルタ項目に足すことで「2」「4」「」を読み込みました

今回の処理のポイントは、一度ダミーの値にてフィルタリングしてから、作成されたコードにM関数を組み込むことになります

では、解説を本格的にはじめたいと思います

ダミーの値でフィルタリング

まずは、前述の元データをPower Queryエディタ(以降エディタ)に読込ます

次に、新たにできたクエリを「参照」して更に新たなクエリを作成しておきます

 参照して作成したクエリの「業種ID・列」にて、次の画像のように適当な値をフィルタリングしておきます

すると、数式バーが次の画像のようになっているはずです

フィルタリングを行うためのリスト作成

 エディタ上でフィルタリングを行うためのリストは、エクセルシート上にある前述のフィルタ項目を「ドリルダウン」して作成します

まず、エクセルシート上の業種IDを指定したフィルタ項目をエディタ上に読込みます

次に上の画像の見出しの箇所/フィルタ項目で、右クリックをします

ドリルダウン」という項目が出てくるので、こちらをクリックします

すると、次の画像のようにエディタ上にリストが作成されています

*下の画像では作成したリストの名前を「Filter」にかえてあります

数式バーにリストの組み込み

 本題に入る前に、M関数の「List.Contains」がどういうものかを確認しておきましょう!

上の図は、M関数「List.Contains」の使用例です(空のクエリから見れます

2番目の引数の「3」が1番目のリストの中に含まれていれば、TRUEを返します

 つまり、今回は「List.Contains」を使用することでTRUEが返ってきたを表示する形にすればいいということです

 ではもう一度、前述のダミーの値でフィルタリングした後の数式を確認してみましょう!

画像に alt 属性が指定されていません。ファイル名: image-31.png

上の画像の「each」に続く「」の中は、「List.Contains」で置き換えます

List.Containsの書き方は次の通りになります

=List.Contains(リスト,値)

今回は上記のリストについては、前述のドリルダウンにより作成した「Filter」を指定し、には「業種ID列/[業種ID]」を指定します

 上の画像のように数式を指定すれば、事前に「フィルタリング項目」で指定してあった業種IDの行のみが表示されます

<まとめ>

 今回はドリルダウンの仕組みを使用して、エクセル上で複数指定した値にてダイナミックにフィルタリングを行う方法を解説しました

M関数としては、「List.Contains」を使用しました

 一度、ダミーの値でフィルタリングしておいた箇所に「List.Contains」を組み入れただけなので、無理なくM関数の活用が行えたと思います

この記事がM関数に慣れるきっかけになれば幸いです

最後まで記事を読んで下さり、誠にありがとうございました

にほんブログ村 資格ブログ ビジネススキルへ
にほんブログ村 IT技術ブログ VBAへ


にほんブログ村