ExcelのCUBEMEMBER関数の使い方|データモデルのメンバーを取得する

スポンサーリンク

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メンバーのプロパティを取得メンバーの属性情報
CUBEKPIMEMBERKPI情報を取得目標値・ステータス

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関数の基本パターンから試してみてください。

タイトルとURLをコピーしました