ここでは、Microsoft Excel の CUBEVALUE 関数の書式および使用法について説明します。
説明
キューブの集計値を返します。
書式
CUBEVALUE(接続, [メンバー式 1], [メンバー式 2], …)
CUBEVALUE 関数の書式には、次の引数があります。
-
接続 必ず指定します。 キューブへの接続名を表す文字列です。
-
メンバー式 省略可能です。 キューブ内のメンバーまたは組を表す多次元式 (MDX) の文字列です。 または、メンバー式は CUBESET 関数で定義したセットでもかまいません。 メンバー式をスライサーとして使用して、合計値が返されるキューブの部分を定義します。 メンバー式でメジャーが指定されない場合は、そのキューブの既定のメジャーが使用されます。
解説
-
CUBEVALUE 関数を使用して評価する場合、すべてのデータを取得する前に、一時的にセル内に "#GETTING_DATA..." というメッセージが表示されます。
-
メンバー式にセル参照が使用され、そのセル参照に CUBE 関数が含まれている場合、メンバー式は参照セルのアイテムに対して、参照セルに表示される値ではなく MDX 式を使用します。
-
接続名がブックに格納されている有効なブック接続でない場合は、エラー値 #NAME? を返します。 オンライン分析処理 (OLAP) サーバーが実行されていない、利用できない、またはエラー メッセージを返す場合も、エラー値 #NAME? を返します。
-
組内の少なくとも 1 つの要素が無効な場合、CUBEVALUE はエラー値 #VALUE! を返します。
-
次の場合、CUBEVALUE はエラー値 #N/A を返します。
-
メンバー式の書式に誤りがある。
-
メンバー式で指定されたメンバーがキューブに存在しない。
-
指定された値に共通部分がなく、組が無効である。 (同一階層にある複数の要素を使用するときに発生する場合があります)
-
セット内に他のメンバーと異なるディメンションを持つメンバーが少なくとも 1 つ含まれる。
-
計算メンバーや名前付きセットなど、ピボットテーブル内のセッションベースのオブジェクトを参照すると、エラー値 #N/A が返されることがあります。 これは、接続が共有されていて、そのピボットテーブルが削除された場合、またはピボットテーブルが数式に変換された場合です ([オプション] タブの [ツール] で [OLAP ツール] をクリックし、次に [数式に変換] をクリック)。
-
問題点: Null 値は長さ 0 の文字列に変換されます。
Excel 内で、セルを全く変更していなかったりコンテンツを削除したりしてセルにデータがない場合、そのセルは空白の値を含んでいます。 多くのデータベース システムでは、空白の値を Null 値 と呼びます。 空白または Null 値とは、文字通り "値なし" という意味です。 ただし、数式では空白の文字列または Null 値を返すことはできません。 数式では常に 3 つの内 1 つの値を返します。つまりは、数値、長さ 0 の文字列になる可能性を持つテキスト値、#NUM! または #VALUE! などのエラー値です 。
数式にオンライン分析処理 (OLAP) データベースに接続された CUBEVALUE 関数が含まれ、このデータベースへのクエリ結果が Null 値の場合、Excel は、数式がそれ以外の数値の値を返す場合であっても、この Null 値を長さ 0 の文字列に変換します。 これにより、ある範囲のセルに数値と長さ 0 の文字列値が含まれるようになる場合があり、このような状況はその範囲のセルを参照している他の数式の結果に影響することがあります。 たとえば、A1 と A3 に数値が含まれ、A2 には長さ 0 の文字列を返す CUBEVALUE 関数の数式が含まれる場合は、次の数式は #VALUE! エラーを返します。
=A1+A2+A3
エラーを回避するには、次の例のように ISTEXT 関数と IF 関数を使用して長さ 0 の文字列かどうかをテストし、条件に応じて文字列を数値 0 に置き換えます。
=IF(ISTEXT(A1),0,A1)+IF(ISTEXT(A2),0,A2)+IF(ISTEXT(A3),0,A3)
または、次の例のように CUBEVALUE 関数を IF 条件に入れ子にして、関数の結果が長さ 0 の文字列に評価される場合に値 0 を返すようにすることもできます。
=IF (CUBEVALUE("売上","[単位].[利益]","[時間].[2004]","[すべての製品].[飲料]")="", 0, CUBEVALUE("売上","[単位].[利益]","[時間].[2004]","[すべての製品].[飲料]"))
SUM 関数では、合計値を計算する際に長さ 0 の文字列は自動的に無視されるため、このテストを実行する必要はありません。
使用例
=CUBEVALUE("売上","[単位].[利益]","[時間].[2004]","[すべての製品].[飲料]")
=CUBEVALUE($A$1,"[単位].[利益]",D$12,$A23)
=CUBEVALUE("売上",$B$7,D$12,$A23)