「ピボットテーブルの集計値をセルの数式で柔軟に参照したい」「Power Pivotのデータを条件を変えながら取得したい」――そんな高度な集計操作を実現するのが CUBEVALUE関数 です。
OLAPキューブやPower Pivotモデルと連携して、MDX(多次元式)で指定した集計値を返します。ピボットテーブルより柔軟にデータを参照できる、上級者向けの分析関数です。
この記事では基本的な使い方、MDX式の書き方のポイント、CUBE系6関数との関係を解説します。
CUBEVALUE関数とは?
読み方と語源
「キューブ バリュー」と読みます。CUBE(キューブ=多次元データ)+ VALUE(値)が語源で、多次元データソースから集計値を取得する関数です。
できること
Power PivotやSQL Server Analysis Services(SSAS)などのOLAPキューブに接続し、MDX式(多次元式)を使って指定した条件の集計値を返します。
- Power Pivotモデルの集計値を任意のセルに表示する
- ピボットテーブルに縛られない柔軟なレポートレイアウトを作る
- 複数の次元(年・製品・地域など)を組み合わせた集計値を動的に取得する
対応バージョン:Excel 2007以降(Power Pivotはデータモデルとの接続が必要)
CUBEVALUE関数の書き方
基本構文
=CUBEVALUE( 接続, [メンバー式1], [メンバー式2], ... )
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 接続 | 必須 | キューブへの接続名を文字列で指定します |
| メンバー式1〜 | 任意 | 取得する値の条件となるMDXメンバー式を指定します(最大複数指定可能) |
複数のメンバー式を指定した場合は、その交点(すべての条件を満たす値)が返されます。
MDX式の基本
CUBEVALUE関数の肝は MDX(Multidimensional Expressions) 式の書き方です。
MDX式は角かっこ [] を使って階層とメンバーを表します。
[ディメンション名].[階層名].[メンバー名]
具体例:
[時間].[年].[2024] → 2024年のメンバー
[製品].[カテゴリ].[飲料] → 製品カテゴリ「飲料」のメンバー
[Measures].[売上金額] → 「売上金額」メジャー
基本的な使い方
例1:売上金額の合計を取得する
Power Pivotモデルに「Sales」という接続があり、2024年の飲料カテゴリの売上合計を取得する場合:
=CUBEVALUE("Sales", "[Measures].[売上金額]", "[時間].[年].[2024]", "[製品].[カテゴリ].[飲料]")
3つのメンバー式(売上金額 × 2024年 × 飲料)の交点値が返されます。
例2:Excel 接続の場合の書き方
Excelのデータモデル(Power Pivot)への接続名は「ThisWorkbookDataModel」が一般的です。
=CUBEVALUE("ThisWorkbookDataModel", "[Measures].[合計 / 売上]", "[製品テーブル].[カテゴリ].&[電化製品]")
例3:セル参照で動的に切り替える
=CUBEVALUE("ThisWorkbookDataModel", B1, B2)
B1・B2セルにメンバー式を入力しておけば、セルの値を変えるだけで取得条件を切り替えられます。
CUBEMEMBER関数との組み合わせ
CUBEMEMBER関数でメンバーを取得してから、CUBEVALUE関数で集計値を求めるパターンもよく使われます。
A1: =CUBEMEMBER("ThisWorkbookDataModel", "[製品テーブル].[カテゴリ].&[電化製品]")
B1: =CUBEVALUE("ThisWorkbookDataModel", "[Measures].[合計 / 売上]", A1)
A1の選択肢を変えることでB1の値が動的に変わります。
CUBE系6関数の役割と使い分け
CUBEVALUEはCUBE系関数の中の1つです。各関数の役割をまとめます。
| 関数 | 返すもの | 用途 |
|---|---|---|
| CUBEVALUE | 集計値(数値) | メジャーの値を取得する中心的な関数 |
| CUBEMEMBER | メンバーオブジェクト | 次元メンバーを参照し、CUBEVALUEと組み合わせる |
| CUBESET | セット(メンバーの集合) | 条件を満たすメンバーの集合を定義する |
| CUBESETCOUNT | セットの件数 | CUBESETで定義したセットの要素数を返す |
| CUBERANKEDMEMBER | ランク順のメンバー | セット内のN番目のメンバーを取得する |
| CUBEMEMBERPROPERTY | メンバーのプロパティ | メンバーの属性情報(名前・説明など)を取得する |
使い分けの基本:
- 集計値が欲しい → CUBEVALUE
- どのメンバーを選ぶか指定する → CUBEMEMBER
- 条件に合うメンバーを絞り込む → CUBESET + CUBERANKEDMEMBER
Power Pivotとの連携
Power PivotはExcel 2010以降で使えるデータモデル機能で、大量データの集計や複数テーブルの結合が得意です。
CUBEVALUE関数はPower Pivotのメジャーを直接セルから参照できるため、ピボットテーブルの形式に縛られない自由なダッシュボードを作れます。
Power Pivotとの連携手順(概要):
- 「データ」→「データモデルに追加」でテーブルをPower Pivotに読み込む
- Power Pivotウィンドウでメジャーを定義する(例:合計売上 = SUM(売上[金額]))
=CUBEVALUE("ThisWorkbookDataModel", "[Measures].[合計売上]", ...)で参照する
よくあるエラーと対処法
| エラー | 原因 | 対処法 |
|---|---|---|
#NAME? | 接続名が存在しない、または正しくない | Excelの接続マネージャーで接続名を確認する |
#N/A | 指定したメンバーがキューブ内に存在しない | MDX式の構文とメンバー名を確認する |
#VALUE! | MDX式の構文が正しくない | [ディメンション].[階層].[メンバー] の形式を確認する |
まとめ
CUBEVALUE関数のポイントをまとめます。
- OLAPキューブやPower PivotモデルからMDX式で集計値を取得できる
- 複数のメンバー式を組み合わせて、絞り込んだ集計値を得られる
- CUBEMEMBER関数と組み合わせると、動的なダッシュボードが作れる
- ピボットテーブルの形式に縛られない柔軟なレポート作成が可能になる
Power Pivotを使い始めた方は、まずCUBEVALUEとCUBEMEMBERの基本的な組み合わせから試してみてください。
