ExcelのCUBEMEMBER関数、名前だけ見ると「なんだか難しそう…」と思いますよね。実際、CUBE関数シリーズは普段のExcel作業ではあまり見かけない関数です。
でも、Power Pivot(パワーピボット)のデータモデルを使い始めると、この関数がとても頼もしい存在になります。CUBEMEMBER関数を使えば、データモデルから特定のメンバーをピンポイントで取り出せるんです。
この記事では、CUBEMEMBER関数の基本的な書き方から実践的な使い方まで、初めての方にもわかるように解説していきます。
CUBEMEMBER関数とは?
CUBEMEMBER関数は、ExcelのCUBE関数シリーズのひとつです。データモデルやOLAP(オーラップ:多次元分析用のデータベース)キューブから、指定したメンバーを取得します。
ここでいう「メンバー」とは、テーブルの特定の列にある値のことです。たとえば「商品カテゴリ」列の「飲料」や、「地域」列の「東京」がメンバーにあたります。
CUBEMEMBER関数の読み方
読み方は 「キューブメンバー」 です。
- CUBE = 立方体(多次元データの構造を指す用語)
- MEMBER = メンバー(構成要素)
つまり「多次元データの構成要素を取り出す関数」という意味ですね。
CUBEMEMBER関数でできること
CUBEMEMBER関数を使うと、次のようなことができます。
- データモデルから特定のメンバーを取得する
- 取得したメンバーをCUBEVALUE関数の条件として使う
- セルにメンバー名やキャプションを表示する
- 動的なレポートの行見出し・列見出しを作る
単体で使うよりも、CUBEVALUE関数と組み合わせて使うケースが多い関数です。CUBEMEMBER関数で「何を」を指定し、CUBEVALUE関数で「いくら」を取得する、というイメージで覚えておきましょう。
使う前に確認!Power Pivotのデータモデル接続
CUBEMEMBER関数を使うには、Power Pivotのデータモデルが必要です。いきなり数式を書いても動かないので、まずは前提条件を確認しておきましょう。
データモデルとは?(初心者向け)
データモデルとは、Excel内部に作られるデータベースのようなものです。Power Pivot(パワーピボット)というExcelのアドイン機能で管理します。
普通のExcelテーブルとの違いは次のとおりです。
| 項目 | 通常のテーブル | データモデル |
|---|---|---|
| データの保存場所 | ワークシート上 | Excel内部のデータベース |
| 複数テーブルの連携 | VLOOKUP等が必要 | リレーションシップで自動連携 |
| 大量データの処理 | 行数制限あり(約100万行) | 数百万行でも高速 |
| CUBE関数の利用 | 不可 | 可能 |
ピボットテーブルを使ったことがある方は、心当たりがあるかもしれません。ピボットテーブル作成時に「データモデルに追加する」というオプションが表示されることがあります。あのチェックを入れると、データモデルが作成されます。
接続名「ThisWorkbookDataModel」の意味
CUBEMEMBER関数の第1引数には「接続名」を指定します。Power Pivotのデータモデルを使う場合、接続名は 「ThisWorkbookDataModel」 です。
これは「このブックのデータモデル」という意味で、Excelが自動的に付ける名前です。自分で変更する必要はありません。
=CUBEMEMBER("ThisWorkbookDataModel", ...)
この接続名はほぼ固定なので、そのまま覚えてしまってOKです。
なお、Power Pivotが使えるExcelのエディションは以下のとおりです。
- Microsoft 365(デスクトップ版すべて)
- Excel 2021 / 2019(Professional / Home & Business / Home & Student)
- Excel 2016(Professional / Professional Plus)
Excel Onlineや一部のエディションでは使えないので注意してください。
CUBEMEMBER関数の書き方(構文と引数)
CUBEMEMBER関数の構文はシンプルです。引数は3つで、必須は2つだけです。
=CUBEMEMBER(接続, メンバー式, [キャプション])
各引数の役割を表で確認しましょう。
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 接続 | 必須 | データモデルやキューブの接続名 |
| メンバー式 | 必須 | 取得するメンバーを指定するMDX式 |
| キャプション | 省略可 | セルに表示する文字列を指定 |
引数1 接続
「接続」には、接続先のデータモデルやキューブの名前を文字列で指定します。
Power Pivotのデータモデルを使う場合は、ほとんどのケースで次のように書きます。
"ThisWorkbookDataModel"
接続名を間違えると #NAME? エラーになるので、スペルミスに気をつけてくださいね。
引数2 メンバー式(MDX式)
「メンバー式」には、取得したいメンバーをMDX式(エムディーエックス式:多次元データを問い合わせるための記述方法)で指定します。
Power Pivotのデータモデルでは、次の形式が基本です。
"[テーブル名].[列名].[値]"
たとえば「売上データ」テーブルの「商品カテゴリ」列から「飲料」を取得する場合はこうなります。
"[売上データ].[商品カテゴリ].[飲料]"
ちょっと独特な書き方に見えますが、パターンは決まっています。角括弧 [] でテーブル名・列名・値をそれぞれ囲んで、ドット . でつなぐだけです。
MDX式を書くときの注意点がひとつあります。数式バーに入力できる文字数は 255文字まで です。これを超えると #VALUE! エラーになります。長いMDX式を使いたい場合は、セル参照を活用して分割するのがおすすめです。
引数3 キャプション(省略可)
「キャプション」には、メンバーが見つかったときにセルに表示する文字列を指定できます。
省略した場合は、メンバー名がそのまま表示されます。たとえば先ほどの例では「飲料」と表示されます。
キャプションを指定すると、表示名を自由に変えられます。
=CUBEMEMBER("ThisWorkbookDataModel", "[売上データ].[商品カテゴリ].[飲料]", "飲料カテゴリ")
この場合、セルには「飲料カテゴリ」と表示されます。レポートの見出しをわかりやすくしたいときに便利ですね。
CUBEMEMBER関数の使い方(実用例)
ここからは、実際の使い方を見ていきましょう。
基本的な使用例
まずは一番シンプルな使い方です。データモデルの「売上データ」テーブルから「地域」列の「東京」を取得してみます。
=CUBEMEMBER("ThisWorkbookDataModel", "[売上データ].[地域].[東京]")
数式を入力すると、セルに「東京」と表示されます。
「セルに東京と表示されるだけ? それなら直接入力すればいいのでは?」と思いますよね。たしかに、CUBEMEMBER関数を単体で使うメリットはあまりありません。
この関数の真価は、次に紹介するCUBEVALUE関数との組み合わせで発揮されます。
CUBEVALUE関数と組み合わせて集計する
CUBEMEMBER関数の最も実用的な使い方は、CUBEVALUE関数と組み合わせるパターンです。
たとえば「東京の売上合計」を取得したい場合、次のように書きます。
ステップ1:CUBEMEMBER関数で条件(メンバー)を取得する
セルA1に地域のメンバーを取得します。
=CUBEMEMBER("ThisWorkbookDataModel", "[売上データ].[地域].[東京]")
ステップ2:CUBEVALUE関数で集計値を取得する
セルB1で、A1のメンバーを条件にして売上金額を集計します。
=CUBEVALUE("ThisWorkbookDataModel", A1, "[Measures].[売上金額の合計]")
ここがポイントです。CUBEVALUE関数のメンバー式引数にCUBEMEMBER関数のセル(A1)を指定しています。このとき、セルに表示されている「東京」というテキストではなく、内部的にMDX式が渡されます。
この仕組みのおかげで、CUBEMEMBER関数の値を変えるだけで集計対象を切り替えられます。行見出しにCUBEMEMBER関数、集計セルにCUBEVALUE関数を配置する。そうすれば、ピボットテーブルのような動的レポートを数式だけで作れるんです。
よくあるエラーと対処法
CUBEMEMBER関数で発生しやすいエラーと、その対処法をまとめました。
#NAME?エラー
#NAME? エラーは、接続名が正しく認識されない場合に発生します。
主な原因は次のとおりです。
- 接続名のスペルが間違っている(例:「ThisWorkbookDataModel」の誤字)
- 接続名の文字列をダブルクォーテーションで囲んでいない
- データモデルがブック内に存在しない
接続名は 「ThisWorkbookDataModel」 を正確にコピーして貼り付けるのがおすすめです。
#N/Aエラー
#N/A エラーは、指定したメンバーが見つからない場合に発生します。
主な原因は次のとおりです。
- MDX式のテーブル名・列名・値のスペルが間違っている
- 指定したメンバーがデータモデルに存在しない
- MDX式の構文が正しくない(角括弧やドットの抜け)
対処法としては、まずMDX式の各部分を確認してみてください。テーブル名や列名は、Power Pivotウィンドウで確認できます。大文字・小文字の違いやスペースの有無にも注意しましょう。
#VALUE!エラー
#VALUE! エラーは、次のような場合に発生します。
- メンバー式が無効な要素を含んでいる
- 数式バーの文字数が255文字を超えている
特に255文字制限は見落としやすいポイントです。長いMDX式を使う場合は、CUBEMEMBER関数を複数のセルに分けて記述し、セル参照で組み合わせる方法がおすすめです。
#GETTING_DATAが表示されるとき
#GETTING_DATA が表示されると「エラーかな?」と焦りますが、これはエラーではありません。データモデルからデータを取得している最中のステータス表示です。
通常は数秒で結果が表示されます。もし長時間表示されたままの場合は、次の対処を試してみてください。
- ブックを保存してから再度開く
- データモデルの接続を更新する(「データ」タブ →「すべて更新」)
- データモデルのサイズが大きすぎないか確認する
他のCUBE関数との使い分け
CUBEMEMBER関数は、CUBE関数シリーズ7種類のうちのひとつです。それぞれ役割が異なるので、一覧で確認しておきましょう。
CUBE関数シリーズ7種類の一覧と役割
| 関数名 | 役割 | 用途の例 |
|---|---|---|
| CUBEMEMBER | メンバーを取得 | レポートの行見出し・列見出し |
| CUBEVALUE | 集計値を取得 | 売上合計・平均値の表示 |
| CUBESET | メンバーの集合を取得 | 複数条件のフィルタ |
| CUBERANKEDMEMBER | 順位指定でメンバーを取得 | 売上Top3の商品名 |
| CUBESETCOUNT | 集合の要素数を取得 | 条件に合う商品の件数 |
| CUBEMEMBERPROPERTY | メンバーのプロパティを取得 | メンバーの属性情報 |
| CUBEKPIMEMBER | KPI情報を取得 | 目標値・ステータス |
CUBEMEMBER関数は「個別のメンバーを取り出す」関数です。複数のメンバーをまとめて扱いたい場合はCUBESET関数、集合の中から順位で取り出したい場合はCUBERANKEDMEMBER関数を使います。
よくある組み合わせパターンとしては、次の2つを覚えておくと便利です。
- CUBEMEMBER + CUBEVALUE: 特定メンバーの集計値を取得(最も基本的な組み合わせ)
- CUBESET + CUBESETCOUNT: メンバーの集合を作って件数を確認
まとめ
CUBEMEMBER関数の使い方を振り返っておきましょう。
- CUBEMEMBER関数はデータモデルから特定のメンバーを取得する関数
- 構文は
=CUBEMEMBER(接続, メンバー式, [キャプション])の3引数 - 接続名はPower Pivotなら「ThisWorkbookDataModel」を指定
- MDX式は
[テーブル名].[列名].[値]の形式で書く - 単体よりもCUBEVALUE関数と組み合わせて使うのが実践的
#NAME?は接続名の誤字やデータモデル未設定が原因#N/Aはメンバー不在、#VALUE!は式の不備や255文字超過が主な原因#GETTING_DATAはエラーではなくデータ取得中の表示- 対応バージョン: Excel 365 / Excel 2024 / Excel 2021 / Excel 2019 / Excel 2016(Mac版含む)
CUBE関数シリーズは最初はとっつきにくく感じるかもしれません。でも、Power Pivotのデータモデルと組み合わせれば、ピボットテーブルでは実現しにくい柔軟なレポートが作れます。まずはCUBEMEMBER関数とCUBEVALUE関数の基本パターンから試してみてください。
