「キューブに接続してデータを取得したいけど、メンバーの属性情報だけ欲しい…」そんな場面、ありますよね。ピボットテーブルで集計するほどではないけれど、特定のメンバーの表示名や階層情報をセルに取り出したい。そんなときに使えるのが、ExcelのCUBEMEMBERPROPERTY関数です。
この記事では、CUBEMEMBERPROPERTY関数の構文や引数、具体的な使い方、よくあるエラーの対処法まで解説しています。
ExcelのCUBEMEMBERPROPERTY関数とは?
CUBEMEMBERPROPERTY関数は、OLAP(オンライン分析処理)キューブに接続して、指定したメンバーのプロパティを返す関数です。
読み方は「キューブ メンバー プロパティ」です。CUBE・MEMBER・PROPERTYの3つの単語に分けると覚えやすいですよ。
たとえば、売上データのキューブから「東京店」というメンバーの店舗面積や開店日といった属性情報を取得できます。ピボットテーブルを使わずに、セル上で直接プロパティを表示できるのがポイントです。
CUBEMEMBERPROPERTY関数を使うための前提条件
この関数を使うには、ExcelからOLAPキューブに接続している必要があります。OLAPキューブとは、大量のデータを多次元で集計・分析するための仕組みのことです。
対応する接続先は、次のとおりです。
- SQL Server Analysis Services
- Power Pivotのデータモデル
- その他のOLAP対応データソース
対応バージョンはExcel 2007以降、またはMicrosoft 365です。お使いのバージョンが対応しているか、確認しておきましょう。
CUBEMEMBERPROPERTY関数の書き方(構文と引数)
基本構文
=CUBEMEMBERPROPERTY(接続, メンバー式, プロパティ)
引数は3つあり、最初の2つが必須です。3つ目のプロパティは省略できます。
引数の一覧
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 接続 | 必須 | OLAPキューブへの接続名(テキスト文字列) |
| メンバー式 | 必須 | キューブ内のメンバーを識別するMDX式 |
| プロパティ | 省略可 | 取得するプロパティ名(省略時はキャプション) |
接続
ブック内に設定されたOLAPキューブへの接続名を指定します。「データ」タブの「接続」から確認できますよ。
メンバー式
キューブ内のメンバーを一意に識別する多次元式(MDX)を指定します。MDXとは、OLAPキューブを操作するための専用言語のことです。
たとえば "[店舗].[都道府県].&[東京]" のように記述します。通常はCUBEMEMBER関数の結果を参照するのが便利です。
プロパティ
取得したいプロパティの名前を指定します。省略するとキャプション(表示名)が返されます。
CUBEMEMBERPROPERTY関数の使い方
基本的な使い方
まずはシンプルな例から見てみましょう。キューブの接続名が「売上データ」で、東京店の店舗面積を取得する場合です。
=CUBEMEMBERPROPERTY("売上データ", "[店舗].[店舗名].&[東京店]", "店舗面積")
この数式は「売上データ」キューブから、東京店の「店舗面積」プロパティの値を返します。
CUBEMEMBER関数と組み合わせて使う
実務では、メンバー式を直接書くよりも、CUBEMEMBER関数と組み合わせるのが一般的です。
たとえば、セルA1にCUBEMEMBER関数でメンバーを取得しておきます。そのプロパティを別のセルで参照しましょう。
A1: =CUBEMEMBER("売上データ", "[店舗].[店舗名].&[東京店]")
B1: =CUBEMEMBERPROPERTY("売上データ", A1, "店舗面積")
C1: =CUBEMEMBERPROPERTY("売上データ", A1, "開店日")
こうすると、A1のメンバーを変えるだけでB1やC1のプロパティも自動的に切り替わります。メンテナンスもしやすいですよ。
取得できるプロパティの一覧
プロパティ引数には、キューブで定義されたカスタムプロパティのほか、以下の標準プロパティも指定できます。
| プロパティ名 | 取得できる情報 |
|---|---|
| CAPTION | メンバーの表示名 |
| MEMBER_KEY | メンバーのキー値 |
| MEMBER_UNIQUE_NAME | メンバーの一意の名前 |
| PARENT_UNIQUE_NAME | 親メンバーの一意の名前 |
| CHILDREN_CARDINALITY | 子メンバーの数 |
| LEVEL_NUMBER | 階層レベルの番号 |
階層構造の情報を取得したいときは、PARENT_UNIQUE_NAMEやLEVEL_NUMBERが便利です。
よくあるエラーと対処法
CUBEMEMBERPROPERTY関数で表示されやすいエラーと対処法をまとめました。
| エラー | 原因 | 対処法 |
|---|---|---|
| #N/A | メンバー式が無効、またはメンバーが存在しない | メンバー式のスペルや階層パスを確認する |
| #VALUE! | 接続名が無効、またはキューブに接続できない | 「データ」タブの「接続」で接続名を確認する |
| #NAME? | 関数名のスペルミス | CUBEMEMBERPROPERTYの綴りを確認する |
一番多いのは#N/Aエラーです。メンバー式はスペルが1文字でも違うとエラーになります。CUBEMEMBER関数でメンバーが正しく取得できているか、まず確認してみてください。
接続名が合っているのに#VALUE!が出る場合は、キューブ側のサーバーが停止している可能性もあります。ネットワーク接続も含めて確認してみましょう。
他のCUBE関数との使い分け
ExcelのCUBE関数は全部で7種類あります。それぞれ役割が異なるので、目的に応じて使い分けましょう。
| 関数名 | 役割 |
|---|---|
| CUBEMEMBER | メンバーまたは組を返す |
| CUBEMEMBERPROPERTY | メンバーのプロパティを返す(本記事) |
| CUBESET | メンバーのセットを定義する |
| CUBESETCOUNT | セット内のアイテム数を返す |
| CUBERANKEDMEMBER | セット内のN番目のメンバーを返す |
| CUBEVALUE | キューブの集計値を返す |
| CUBEKPIMEMBER | KPI(重要業績評価指標)のプロパティを返す |
よくある組み合わせは次のとおりです。
- メンバーの属性を調べたい → CUBEMEMBER + CUBEMEMBERPROPERTY
- 集計値を取得したい → CUBEMEMBER + CUBEVALUE
- セットから順番に取り出したい → CUBESET + CUBERANKEDMEMBER
CUBEMEMBERPROPERTY関数は「プロパティ(属性情報)」を取得する関数です。「集計値」を取得したい場合はCUBEVALUE関数を使いましょう。
まとめ
CUBEMEMBERPROPERTY関数は、OLAPキューブからメンバーの属性情報を取得するための関数です。
ポイントをおさらいしましょう。
- 構文は
=CUBEMEMBERPROPERTY(接続, メンバー式, プロパティ) - CUBEMEMBER関数と組み合わせて使うのが実務では一般的
- プロパティを省略するとキャプション(表示名)が返される
- #N/Aエラーはメンバー式の記述ミスが原因であることが多い
CUBE関数群は、Excelでデータ分析の幅を広げてくれる便利なツールです。まずはCUBEMEMBER関数と組み合わせて試してみてください。
