Excel(エクセル)にはデータベースと接続してそのデータを扱う『CUBE(キューブ)』関数というのが在りますね。その中でデータベースのフィールドや計算尾条件を指定して計算結果を表示させる関数が『CUBEVALUE(キューブバリュー)』関数になります。この関数ではデータベースあるいはExcelに作成したテーブルを読み込んで計算する事が出来ます。その際にどの部分を計算するのか指定する必要がありますが、その指定の仕方で困ってしまう人が多いんですね。その部分を指定する時に使う関数が『CUBEMEMBER(キューブメンバー)』になっています。
今回はそんな『CUBEVALUE』関数について使い方を確認しましょう!

Excelからデータベースに接続するってどうするの?

さて『CUBE』関数を活用するにあたり押さえておかないといけないポイントは『データベースへの接続』ですね。データベースはさまざまなデータがまとまっている物になります。

そのデータベースはデータベースサーバーにあったりする訳ですね。CUBEを使う時にはどのデータベースにあるデータを使うのかを指示しないといけません。

その時にはデータベースサーバーに保存しているデータベースの名前を関数の中で指定する事になります。ネットワーク上のサーバーを指示する方法になりますが今回は割愛します。

もう1つの方法としては、Excelに作成したテーブルをデータベースとして使用する場合の方法です。データベースはデータの集まりなので『テーブル』もデータベースとして使う事が出来ます。MOSExcelエキスパートの試験ではこの方法になりますのでこちらを説明します。

流れとしてはCUBEを書いたらデータベースの指定に“ThisWorkbookDataModel”と記載しましょう。これは『Excelに作成してあるデータベース』という意味になります。MOS試験ではこの手法で接続しているので覚えておきましょう!

ここがポイント!

『=CUBEVALUE(”ThisWorkbookDataModel”、引数・・・)』
関数をセルに直接入力すると『”ThisWorkbookDataModel”』を選ぶ事が出来るので便利

『CUBEMENBER』でフィールドを指定しよう!

計算をする前に計算するフィールドの指定の仕方を覚えておきましょう!

フィールド名は『氏名』とか『年齢』とかの部分ですね。関数に直接『氏名』という感じで書き込んでも動く場合もありますが、それだと反応しない場合もあります。

しっかりと『データベースの中の氏名フィールド』という設定が必要になるからですね。その時に『CUBEMEMBER』が活用出来ます。

ここがポイント!

関数式:『=CUBEMEMBER(“ThisWorkbookDataModel”(データベース名)、フィールド名)』

『データベースの中のフィールドやデータ』という事で上の様な指示の仕方になります。

結果としては引数で指示した『フィールド名』が表示されます。一見、入力したフィールド名がそのまま表示されるので意味があるのか?と思うかもしれませんが、ちゃんと『データベースから取ってきたフィールドやデータ』という状態になっているので大事なんですね。

『CUBEMEMBER』の書き方と使い方をチェックしよう

では実際に『CUBEMEMBER』でフィールド名を指定してみたいと思います。
テーブルをExcelに作成しておきました。
テーブルには【名簿】という名前を付けています。

テーブルを用意しました。

今回はこの『名簿の中の年代が30』という事で指示してみます。
関数は『=CUBEMEMBER(』まで書いておきましょう。データベースの指示が楽になるので関数の挿入よりは、セルに直接書いた方が良いです。

cubemember関数を書きました

その後に『“』(ダブルクォーテーション)を書くと『ThisWorkbookDataModel』が選べる様になるので選択しておきましょう。

データベースに接続します

次は取り出したいフィールドの指示の仕方ですね。これも『“』を書くと選べる様になります。まずはテーブルを指示するので『名簿』を選ぶ訳ですね。

データベースのフィールドを設定します

次は『年代』を選びます。『.』(ドット)を書くと次の内容が選べる様になっているので『年代』を選びましょう。

フィールドから年代を指定します

ここまでで確定すると結果としては『年代』が表示されます。
今回はその中の『30』というデータを指示したいので『.[30]』と書き込みます。

データである30を指定します

関数の内容をチェックして間違いなければ確定させましょう。
『30』と出てくればOKです!

データベースからフィールドを指定してデータを取り出しました

こんな感じでデータベースからフィールドとかデータを指定する訳ですね。

『CUBEVALUE』関数でデータベースの値を計算しよう!

ではいよいよ『CUBEVALUE』で計算をしてみましょう!この関数では『データベースのどのフィールドがどういう条件にあっている値をどの様に計算するのか』という事を指示する事になります。
言葉にすると分かりにくいですけどね。とりあえず関数の形をチェックしましょう!

ここがポイント!

関数式:『=CUBEVALUE(データベース名、メンバー式・・・)』

データベース名はこれまで同様に『ThisWorkbookDataModel』でExcelにあるテーブルを指示するか、実際にあるデータベースを指示しましょう。

【メンバー式】では計算するフィールドと条件を指示します。ここでさっきのCUBEMEMBERを活用する訳ですね。『年代が30』という事であれば『CUBEMEMBER(“ThisWorkbookDataModel”,”[名簿].[年代].[30]”)』ってなる訳ですね。

最後にはどの様に計算するかの指示をする事になります。
言葉にするとなかなか難しそうですがコツを掴めば出来ます。流れをチェックして行きましょう!

『CUBEVALUE』の書き方の流れをチェックしておこう!

それでは実際に上と同じテーブルを使って『年代が30』の『売上の合計』を出してみましょう!
テーブルは『名簿』という名前がついています。
関数は『=CUBEVALUE(”ThisWorkbookDataModel”、)』まで書きましょう。

CUBEVALUE関数を書きました。

Excelに作成してあるデータベースを使うのでこうなる訳ですね。
次に条件になる部分を指示します。ここで上でやった『CUBEMEMBER』を活用する訳です。
『名簿の中で年代が30』の部分を計算したいという事になる訳なのでそうすると『=CUBEVALUE(“ThisWorkbookDataModel”,CUBEMEMBER(“ThisWorkbookDataModel”,”[名簿].[年代].[30]”),』になりますね。

フィールドと条件を指定しました

最後にどこの部分をどう計算したいかを指示します。今回は『売上を合計』したいので引数としては『[売上 / 合計]』となります。ただ計算をしたいので最初に『[Measures]』を付けます。
なので最終的な関数の結果としては

『=CUBEVALUE(“ThisWorkbookDataModel”,CUBEMEMBER(“ThisWorkbookDataModel”,”[名簿].[年代].[20]”),”[Measures].[合計 / 売上]”)』という事になりますね。

CUBEVALUE関数が完成しました。

ここでの注意点としては『売上 / 合計』で『/』(スラッシュ)の前後に半角のスペースを入れるという部分になります。忘れると計算されませんので注意しましょう

計算結果が表示されています

ExcelのCUBE関数で計算!【CUBEVALUE】【CUBEMEMBER】でデータベースから条件にあった数値を計算しよう|【まとめ】

ExcelのCUBE関数の中で『CUBEMEMBER』と『CUBEVALUE』の使い方を紹介しました。
MOSの試験でも初めて見る時には難しくて敬遠されがちな関数になります。ただこれについては引数の意味が分かると、何をどの様に指示しないといけないのかという事が分かってきます。そうすると出来る様になっていきますね。今回はだいぶ長い関数になりましたが実際にデータベースに接続するともうちょっと書き方が変わったりもします。フィールドの条件の指定の所をセル参照でやれたりもします。どちらにしてもこの関数を活用する場合には『セルに直接関数を書きこむ』スタイルの方がやりやすかったりするので覚えておきましょう!