Power Pivotで作ったKPIをExcelに表示したいけれど、ピボットテーブルではレイアウトが固定されて困っていませんか?
実はCUBEKPIMEMBER関数を使えば、KPI名・実績値・目標値・状態・傾向を関数だけで取り出せます。
CUBEVALUE関数と組み合わせれば、自分好みのレイアウトでKPIダッシュボードを組むことも可能です。
この記事ではCUBEKPIMEMBER関数の構文と4種類のKPIプロパティを解説します。
CUBEVALUEとの組み合わせ方や実務で使えるダッシュボード設計まで丁寧に紹介します。
CUBEKPIMEMBER関数とは?
CUBEKPIMEMBER関数は、KPI(重要業績指標)の名前やプロパティをセルに取り出す関数です。
OLAPキューブまたはExcelデータモデルに定義されたKPIを参照します。
KPIとは「目標に対してどれくらい達成しているか」を測るための指標です。
Power PivotやSQL Server Analysis Services(SSAS)で、あらかじめ定義しておきます。
CUBEKPIMEMBER関数を使うと、その定義済みKPIから次のような情報をセルに取り出せます。
- KPIの名前(タイトル)
- KPIの実績値
- KPIの目標値
- KPIの達成状態(良好・中立・悪化)
- KPIの傾向(改善・横ばい・悪化)
NOTE
CUBEKPIMEMBER関数を使うには、ブックに「ExcelデータモデルでKPIが定義されている」または「OLAPキューブへの外部接続がある」のいずれかが必要です。何も接続していないブックでは使えません。
CUBEKPIMEMBER関数の構文と引数
CUBEKPIMEMBER関数の構文は次のとおりです。
=CUBEKPIMEMBER(connection, kpi_name, kpi_property, )
各引数の意味は次のとおりです。
| 引数 | 必須 | 内容 |
|---|---|---|
| connection | 必須 | キューブまたはデータモデルへの接続名(文字列)。Excelデータモデルなら "ThisWorkbookDataModel" |
| kpi_name | 必須 | KPIの名前(文字列)。例: "[Sales].[KPI 1]" |
| kpi_property | 必須 | 取り出すプロパティを表す1〜4の整数 |
| caption | 省略可 | セルに表示する別名。省略するとKPI名+プロパティ名が表示される |
kpi_propertyの値と意味
第3引数の kpi_property は1〜4の整数で、何を取り出すかを指定します。
| 値 | プロパティ名 | 取り出す内容 |
|---|---|---|
| 1 | KPIValue | KPIの実績値 |
| 2 | KPIGoal | KPIの目標値 |
| 3 | KPIStatus | KPIの状態(達成度) |
| 4 | KPITrend | KPIの傾向(前期比など) |
kpi_property=3(KPIStatus)と kpi_property=4(KPITrend)の戻り値は少し特殊です。
通常 -1、0、1 の整数を返します。
| 戻り値 | 状態 | 傾向 |
|---|---|---|
| 1 | 良好(目標達成) | 改善傾向 |
| 0 | 中立(許容範囲内) | 横ばい |
| -1 | 悪化(目標未達) | 悪化傾向 |
NOTE
状態と傾向の戻り値は、KPI定義時に設計者が設定したしきい値の式で決まります。基本は -1 / 0 / 1 ですが、カスタム定義によっては別の値を返す場合もあります。
CUBEKPIMEMBER関数の基本的な使い方
ここからは「Total Sales KPI」というKPIがExcelデータモデルに定義済みという前提で進めます。
基本的な使い方を順番に見ていきましょう。
基本例: KPIの名前を取得する
KPIの名前(タイトル)を取得するには、第3引数を 1(KPIValue)にして、別名を第4引数で指定します。
=CUBEKPIMEMBER("ThisWorkbookDataModel","[Measures].[Total Sales KPI]",1,"売上達成KPI")
セルには第4引数で指定した「売上達成KPI」が表示されます。
第4引数を省略した場合は「Total Sales KPI Value」のような自動生成のキャプションが入ります。
引数 kpi_property を変えて4つのプロパティを取り出す
同じKPIに対して、第3引数を1〜4まで変えると、それぞれ異なるプロパティを取り出せます。
=CUBEKPIMEMBER("ThisWorkbookDataModel","[Measures].[Total Sales KPI]",1,"値")
=CUBEKPIMEMBER("ThisWorkbookDataModel","[Measures].[Total Sales KPI]",2,"目標")
=CUBEKPIMEMBER("ThisWorkbookDataModel","[Measures].[Total Sales KPI]",3,"状態")
=CUBEKPIMEMBER("ThisWorkbookDataModel","[Measures].[Total Sales KPI]",4,"傾向")
ただし、この時点でセルに表示されるのは第4引数のキャプション文字列だけです。
実際の数値(実績値や状態の数値)を取り出すには、次の章で紹介するCUBEVALUE関数と組み合わせる必要があります。
NOTE
CUBEKPIMEMBER関数は単独で使うと「メンバーオブジェクト」を返します。セルにはキャプションのテキストが表示されますが、内部的にはCUBEVALUEで数値化するためのIDのようなものを保持しています。
CUBEKPIMEMBERとCUBEVALUEを組み合わせてKPIを表示する
CUBEKPIMEMBER関数の本領は、CUBEVALUE関数の引数として渡したときに発揮されます。
CUBEVALUEは「メンバーが指す実際の数値」を返す関数です。
CUBEKPIMEMBERで指定したプロパティの数値を、これで取り出せます。
値(実績)をCUBEVALUEで取得する
実績値を数値として取り出す数式は次のとおりです。
=CUBEVALUE("ThisWorkbookDataModel",CUBEKPIMEMBER("ThisWorkbookDataModel","[Measures].[Total Sales KPI]",1))
これでセルに「12,345,678」のような実績値の数値が表示されます。
目標値をCUBEVALUEで取得する
第3引数を 2(KPIGoal)に変えれば、目標値を取り出せます。
=CUBEVALUE("ThisWorkbookDataModel",CUBEKPIMEMBER("ThisWorkbookDataModel","[Measures].[Total Sales KPI]",2))
状態を判定アイコンに変換する
状態(kpi_property=3)はそのままでは -1 / 0 / 1 の整数です。
IF関数やCHOOSE関数で記号に変換すると見やすくなります。
=CUBEVALUE("ThisWorkbookDataModel",CUBEKPIMEMBER("ThisWorkbookDataModel","[Measures].[Total Sales KPI]",3))
この戻り値(仮に E2 セル)を判定マークに変換するなら次のとおりです。
=CHOOSE(E2+2,"×","△","○")
-1 のときは ×、0 のときは △、1 のときは ○ が返ります。+2 を足しているのは、CHOOSE関数のインデックスが1始まりだからです。
傾向を矢印に変換する
傾向(kpi_property=4)も同じ方法で矢印に変換できます。
=CUBEVALUE("ThisWorkbookDataModel",CUBEKPIMEMBER("ThisWorkbookDataModel","[Measures].[Total Sales KPI]",4))
戻り値(仮に F2 セル)を矢印に変換するなら次のとおりです。
=CHOOSE(F2+2,"↓","→","↑")
-1 で下向き矢印、0 で横向き矢印、1 で上向き矢印が表示されます。
CUBEKPIMEMBERでKPIダッシュボードを作る
ここまでの組み合わせを使うと、関数だけでKPIダッシュボードを作れます。
ピボットテーブルに頼らないので、レイアウトの自由度が高いのが利点です。
KPI名・実績・目標・達成率・状態・傾向の6列レイアウト
A列〜F列に次のような数式を並べると、KPIダッシュボードの1行ぶんが完成します。
| 列 | ヘッダー | 数式 |
|---|---|---|
| A | KPI名 | =CUBEKPIMEMBER("ThisWorkbookDataModel","[Measures].[Total Sales KPI]",1,"売上KPI") |
| B | 実績 | =CUBEVALUE("ThisWorkbookDataModel",CUBEKPIMEMBER("ThisWorkbookDataModel","[Measures].[Total Sales KPI]",1)) |
| C | 目標 | =CUBEVALUE("ThisWorkbookDataModel",CUBEKPIMEMBER("ThisWorkbookDataModel","[Measures].[Total Sales KPI]",2)) |
| D | 達成率 | =B2/C2 |
| E | 状態 | =CHOOSE(CUBEVALUE("ThisWorkbookDataModel",CUBEKPIMEMBER("ThisWorkbookDataModel","[Measures].[Total Sales KPI]",3))+2,"×","△","○") |
| F | 傾向 | =CHOOSE(CUBEVALUE("ThisWorkbookDataModel",CUBEKPIMEMBER("ThisWorkbookDataModel","[Measures].[Total Sales KPI]",4))+2,"↓","→","↑") |
条件付き書式と組み合わせる
E列の状態セルに条件付き書式を設定すれば、○ を緑、△ を黄、× を赤に塗り分けられます。
「ホーム」タブ →「条件付き書式」→「セルの強調表示ルール」→「指定の値に等しい」で設定します。
複数KPIを縦に並べる
KPIが複数ある場合は、第2引数のKPI名を変えて縦に並べていきます。
たとえば2行目に「Total Sales KPI」、3行目に「Profit Margin KPI」のように記述します。
経営ダッシュボードのような一覧表が、関数だけで作れます。
NOTE
同じKPI名を何度も書くのが面倒な場合は、KPI名を別セル(例:
G2)に書いておき、セル参照で渡す形にすると保守が楽になります。=CUBEKPIMEMBER("ThisWorkbookDataModel",G2,1)のように書けます。
CUBEKPIMEMBER関数でよくあるエラーと対処法
CUBEKPIMEMBER関数を使っているとよく出るエラーと対処法を整理しておきます。
| エラー | 主な原因 | 対処法 |
|---|---|---|
| #N/A | 指定したKPI名がデータモデル/キューブに存在しない、スペルミス、大文字小文字違い | ピボットテーブルのフィールドリストでKPI名を確認しコピペで貼り付ける |
| #NAME? | 関数名のタイプミス、connectionが引用符で囲まれていない | 関数名の綴りを確認、第1引数を "ThisWorkbookDataModel" のように引用符で囲む |
| #GETTING_DATA | エラーではなく、バックグラウンドで値を取得中の一時表示 | 数秒待つ。長時間続く場合は接続不良を疑う |
| 空欄・想定外の値 | kpi_propertyに1〜4以外の数値を指定、KPIが定義されていないメジャーを指定 | kpi_propertyは1〜4の整数のみ使用し、データモデル側でKPIが定義されているか確認 |
NOTE
KPI名は
"[Measures].[KPI 1]"のような角カッコ付きの形式で書く必要があります。これは「キューブ表記」と呼ばれる書式で、ピボットテーブルからフィールドをコピーすると正しい形式で取得できます。
似たCUBE関数との使い分け
CUBE関数シリーズには7つの関数があり、それぞれ役割が異なります。
CUBEKPIMEMBERは「KPI専用」のメンバー取得関数なので、用途に応じて他のCUBE関数と使い分けます。
| 関数 | 役割 | 主な用途 |
|---|---|---|
| CUBEMEMBER | 一般のメンバーを取得 | 次元・階層・メジャーの参照 |
| CUBEVALUE | メジャー値(数値)を取得 | 売上合計・件数などの集計値 |
| CUBESET | メンバーのセット(集合)を定義 | 「上位10商品」などの動的なグループ |
| CUBESETCOUNT | セット内のメンバー数を取得 | セットの件数カウント |
| CUBERANKEDMEMBER | セット内のN番目のメンバーを取得 | TOP5表示 |
| CUBEMEMBERPROPERTY | メンバーのプロパティを取得 | メンバーの属性値(地域コードなど) |
| CUBEKPIMEMBER | KPIとそのプロパティを取得 | KPIダッシュボード |
CUBEMEMBERとの違い
CUBEMEMBER関数はキューブ内の一般のメンバー(次元・階層・メジャー)を返します。
一方、CUBEKPIMEMBERはKPI定義に特化しています。
KPIプロパティ(値・目標・状態・傾向)を引数で指定して取り出せる点が異なります。
CUBEMEMBERの詳しい使い方は【Excel】CUBEMEMBER関数の使い方をご覧ください。
CUBEVALUEとの違い
CUBEVALUE関数は「メジャーの数値そのもの」を返す関数です。
一方CUBEKPIMEMBERは「メンバー(参照情報)」を返すだけです。
実際の数値を取りたいときはCUBEVALUEと組み合わせる必要があります。
役割が補完的な2関数です。
CUBEVALUEの詳しい使い方は【Excel】CUBEVALUE関数の使い方をご覧ください。
CUBEMEMBERPROPERTYとの違い
CUBEMEMBERPROPERTY関数はメンバーの「属性プロパティ」(地域名や商品カテゴリなど)を返します。
一方、CUBEKPIMEMBERは「KPIプロパティ」(値・目標・状態・傾向)を返すという点で別物です。
プロパティの種類が違います。
CUBEMEMBERPROPERTYの詳しい使い方は【Excel】CUBEMEMBERPROPERTY関数の使い方をご覧ください。
CUBE関数シリーズの全体マップ
CUBE関数を学習する順序としては、まずCUBEMEMBER・CUBEVALUEで基本を押さえます。
次にCUBESET・CUBESETCOUNT・CUBERANKEDMEMBERでセット操作に進みます。
最後にCUBEMEMBERPROPERTY・CUBEKPIMEMBERで属性・KPI取得に広げるのがおすすめです。
関連記事のリンクは次のとおりです。
- 【Excel】CUBEMEMBER関数の使い方
- 【Excel】CUBEVALUE関数の使い方
- 【Excel】CUBESET関数の使い方
- 【Excel】CUBESETCOUNT関数の使い方
- 【Excel】CUBERANKEDMEMBER関数の使い方
- 【Excel】CUBEMEMBERPROPERTY関数の使い方
まとめ
ExcelのCUBEKPIMEMBER関数は、Power PivotやOLAPキューブで定義したKPIを取り出す関数です。
関数だけでセルに値・目標・状態・傾向を表示できます。
要点をまとめると次のとおりです。
- 構文は
=CUBEKPIMEMBER(接続名, KPI名, プロパティ番号, [別名]) - 第3引数は
1=値 /2=目標 /3=状態 /4=傾向 の4種類 - 状態と傾向は通常
-1 / 0 / 1の整数を返す - 数値を取り出すにはCUBEVALUE関数と組み合わせる
- IF関数やCHOOSE関数で
○△×や矢印に変換すると見やすい - CUBE関数シリーズ7関数の中で、KPI専用のメンバー取得がCUBEKPIMEMBERの役割
ピボットテーブルでは難しい自由レイアウトのKPIダッシュボードを作りたいときに、CUBEKPIMEMBERとCUBEVALUEの組み合わせは強力な武器になります。
Power Pivotで作ったKPIを最大限に活かすために、ぜひ活用してみてください。
