タグ別アーカイブ: ランク分け

DAXで定量的にランク分けして集計を行う~分析の基本~

【分けることが分析の基本です。DAXを使用して一発で定量的なランク分けを行いましょう!】

今回の記事では修正が面倒なIF式を使わないままDAXで定量的に分類を行います

仮にエクセルで同じことを行うのであれば「VLOOKUP関数(近似値検索)」やIF式を組み合わせて行う必要があります

DAXであれば一つのメジャーをすれば一発で集計できます

使用するテーブル

使用するテーブル:DATAは次のテーブルになります

ランクテーブルの作成

まずはDAXでランクテーブルを作成します

エクセルなどでランクテーブルを作成した上でPower BIに取り込むよりずっと楽です

ランクテーブルの作成には「DATATABLE関数」を使用します

DATATABLE関数は2つのパートに分かれています

1.列の作成⇒列名と列の形式を指定します(例:”NO”、INTEGER:数字形式、STRINGで文字列形式)

2.列の中身の作成⇒{}の中に、更に{}を使用して行を表現します

今回のDAXの中身は次のようになります

RankTable = DATATABLE(

“NO”,INTEGER,”NAME”,STRING,”Min”,INTEGER,”Max”,INTEGER, 

{

  {1,”A”,50,200},  {2,”B”,30,50},  {3,”C”,0,30}

 }

)

ランク分けのメジャーの作成

ランク別にカウント

ここからは前述のランクテーブルを使用してランク別にカウント処理を行います

つまり、DATAテーブルの金額列とランクテーブルの各行を互いに評価する形になります

ですのでFILTER 関数が2つ(DATA、ランクテーブル)出ててきます

Count_by Segment = CALCULATE(

    COUNTROWS(‘DATA’),

    FILTER(‘DATA’,   

  NOT(ISEMPTY(

         FILTER(‘RankTable’,NOT(ISBLANK([金額]))&&’RankTable'[Min]<[金額]&&’RankTable'[Max]>=[金額])

        

      

   )
)

上記に出てくる「ISEMPTY関数」「ISBLANK関数」についてはこちらをご参照ください

ランク別の合計金額

ランク別に合計金額を集計する場合にはCALCULATE関数内でSUM関数を使用します

SUM_by Segment = CALCULATE(

    SUM(‘DATA'[金額]),   

  FILTER(‘DATA’,(省略)

<まとめ>

今回はDAXを使用してランク分けする方法について解説しました

DAX式は少し複雑ですが、一度作成してしまえば何度でも使いまわすことができるのでとても便利です

ぜひ有効活用してみてください

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

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ

分析からダッシュボード作成を体験する講座

【実践的エクセル力向上】エクセル便利機能をうまく活用する力➡エクセル力をあげてワンランクアップ上の仕事ができるようになりましょう!

お申込み

  *ストリートアカデミーのページに遷移します

エクセルの進化は凄まじいものがあります

驚くほど便利な機能が備わっています

重要なのはそれらの便利機能を「知る」かどうかです

「便利機能を知り、うまく便利機能を組み合わせて実際の仕事を効率化する」、それがエクセル力です

 今回のレッスンでは目から鱗の便利機能に沢山触れて頂き、エクセル力を上げる勘所を掴んで頂きます

エクセル力事例

エクセル力の2つの例を紹介します

1つ目はABC分析のランク分けです

従来のABC分析の場合には、ランク分けは次の3つの手順で行っていました

①データを降順で並べ替え➡

②ランク分けの基準作成➡

③IF関数で基準毎にランク分け

 この方法の場合は「ランク分けの基準を変更したり」「データを追加」した場合には①~③をまた繰り返さねばなりません

 今回のレッスンでは「VLOOKUP関数の隠れた便利機能との組み合わせ」により、この面倒なランク分けを自動化します!

 上のGIF画像では、画像上の表にて、ランク別に上位の比率を変更すると、元データのランクが自動的に変更されていきます!

2つ目は双方向グラフです

 このグラフデザインだとABCのランク別に、販売個数と商品数の比較が行い易くなります

一見、難しそうですが、グラフの標準機能を組み合わせるだけで行えます

実は、グラフの軸は反転できるのです!

この「軸の反転」機能を中心に双方向グラフの作成を体験して頂きます

 最終的には、今紹介した2つの事例等を組み合わせて、下の画像の様なダッシュボードの作成を体験して頂きます(全てのコンテンツを一から作成するわけではないので、その点は予めご了承お願いします)

 ダッシュボードの作成では、「スライサー/選択」をはじめとするピボットテーブルの有効活用方法についても解説させて頂きます

レッスンの特徴

個別にマンツーマンでレッスンを行います

 事前に個別に課題や要望等をすり合わせさせて頂き、レッスンプログラムについては調整を行わせて頂きます

 尚、レッスンは体験という位置づけであり、ダッシュボードのコンテンツを全て一から作成・演習するわけではない旨を予めご了承お願いします

では、レッスンでお会いしましょう!

 このレッスンを通じて飛躍的にエクセル力を向上させる機会になるようにしましょう!

お申込み

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

にほんブログ村 IT技術ブログ VBAへ

にほんブログ村

XxXLookup関数で集計上手になる!

読者の皆さんがこれまで使用したエクセル関数の中で、一番使用頻度が高かったのはどの関数でしょうか?

多くの皆さんはVLOOKUP関数と答えるのではないでしょうか?

ところが、XLOOKUP関数の登場により、関数の使用シーンがこれから大きく変わっていきそうです

まだ使用できるエクセルバージョンは少ないかもしれませんが、それだけXLOOKUP関数の登場はインパクトがあります

特にXLOOKUP関数と他の関数を組み合わせることにより、データ集計の効率を格段に向上させることができそうです

今回は、XLOOKUP関数同士を組み合わせた例を2つ紹介します

どちらの例も、表を2次元で処理できるので、利用シーンが多そうです

①マトリクス表から2つの条件に合致するものを抽出する

条件を2つ(条件①部門x条件➁四半期間)をリストで指定し、2つの条件に一致する値を抽出する

➁マトリクス表でランク付けをする

事業の売上額と成長率、在庫商品の在庫額と回転率、などなど二次元でランク付けすることはよくあります

ところが、これまでは単に関数を使用するだけでは、ランク付けは自動ではできませんでした

尚、これからの解説は既にXLOOKUP関数を使用したことがある人を主として想定しています

但し、そうでない方もサンプルファイルをダウンロードすることで、そのままサンプルファイルの使用例を他の目的に利用していくことも想定しています!

1.そもそもXLOOKUP関数とは?

2つの事例を紹介する前に少しXLOOKUP関数について簡単におさらいをしておきましょう

サンプルファイルでは1シート目の内容です

サンプルの内容は部門毎に対応する部門長を別表から抽出するものです

XLOOKUP関数も、VLOOKUP関数と同じように検索値を基にして表からデータを抽出します(事例では北海道を検索値として、部門長の木村を抽出)

但し、VLOOKUP関数で行っていたような

「○○から右に何番目」

といった列数の指定が無く、検索する範囲(サンプルの部門)、戻り範囲(部門長)を指定しするだけです

つまり、 「○○から右に何番目」 の縛りがなく、検索値が参照表の左に無くてもいいし、列方向でなく行方向でもデータを抽出できます

引数は以下のような形で指定します

=XLOOKUP(検索値、検索値範囲、戻り範囲、【省略可】)

2.マトリクス表から2つの条件に合致するものを抽出する
XLOOUP関数の3番目の引数、戻り範囲にXLOOKUP関数を入れるのがポイントになります

仮に戻り範囲にXLOOKUP関数を入れなければ、いわゆるスピる(値があふれ出す)状態になります

以下が検索の軸を部門にし、戻り範囲を表の全範囲にした場合です

列方向でスピります

・=XLOOKUP(I3,B3:B9,C3:F9)*3番目の引数を全範囲

以下が期間を軸に、戻り範囲を表の全範囲にした場合です

行方向でスピります

・=XLOOKUP(I4,C2:F2,C3:F9)*3番目の引数を全範囲

この2つのスピりの交点が求まれば正解の値です

ですので、以下のように3段階でXLOOKUP関数を組み合わせます

A.部門の検索を行うXLOOKUP関数を作成

B.但し、3番目の引数に期間を検索するXLOOKUP関数を入れる

C.3番目の引数になるXLOOKUP関数は”期間の選択”に備えて戻り範囲=全範囲

最終的にはこのようになります

=XLOOKUP(I3,B3:B9,XLOOKUP(I4,C2:F2,C3:F9))

数式の内容はサンプルファイルにて、実際に入力されている内容を確認してくみてください

3.マトリクス表でランク付けをする

2.で行ったXLOOKUPによる関数では、4番目以降の引数を省略していました

ここで、5番目の引数を登場させます

VLOOKUP関数でも4番目の引数で検索方法を指定しています

FALSE=完全一致

TRUE≒完全一致

XLOOKUP関数では以下のように検索方法を指定できます

0⇒完全一致

-1⇒検索値の次に小さい値

1⇒検索値の次に大きい値

今回使用するの-1、検索値の次に小さい値です

以下の表で言えば、もし売上が30なら30より小さい値の0が該当し、前期比が15%であれば、10%が該当します

つまり、2.で行ったXLOOKUP関数の組み合わせに、検索方法-1を組み合わせれば2次元でのランク付けは、簡単に自動化できるのです

式は以下のようになります

=XLOOKUP(C5,$H$4:$H$6,XLOOKUP(D5,$I$3:$K$3,$I$4:$K$6,,-1),,-1)

企業ではABC分析の延長で、2つの変数(例:売上、利益率)で事業や商品を評価する機会が多いので、このXLOOKUP関数の組み合わせを行う機会は多いと思います

<まとめ>

今回は大きく分けて2つの事を解説しました

ⅰ)XLOOKUP関数を行列、双方向で組み合わせる(スピるの組み合わせ)

ⅱ)XLOOKUP関数の検索方法を工夫し、自動でランク付けをする

このⅰ)ⅱ)ができれば、データ集計がとても楽に行えます

ぜひ、有効活用していきましょう!

このブログではFILTER関数など、XLOOKUP関数と同じ新たなタイプの関数の解説も行っていますので、そちらもぜひ参照してみてください

尚、XLOOKUP関数が使えるエクセルバージョン(2020年9月19日時点)は限られており、OFFICE365ユーザー向けとなっています

2019バージョンユーザーなどは使用できないので、その点はまだ不便ではあります

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

にほんブログ村