次の方法で共有


計算のための数式の作成

このトピックでは、PowerPivot for Excel での数式作成の基本について説明し、計算列の作成例とテーブルの操作方法を示します。このトピックには次のセクションがあります。

  • メジャーと計算列

  • 数式の基本

  • テーブルと列の操作

  • 数式内のエラーのトラブルシューティング

このトピックの説明を読んでから、詳細については、次のトピックを参照してください。

メジャーと計算列

PowerPivot ブック内では、計算列およびメジャーの中で数式を使用できます。

  • 計算列は、既存の PowerPivot テーブルに追加する列です。列に値を貼り付けるかインポートする代わりに、列値を定義する Data Analysis Expressions (DAX) 数式を作成します。ピボットテーブル (またはピボットグラフ) に PowerPivot テーブルを含めると、他のデータ列と同じように計算列を使用できます。

  • メジャーとは、PowerPivot データを使用するピボットテーブル (またはピボットグラフ) 専用に作成される数式のことです。COUNT や SUM などの標準の集計関数に基づいてメジャーを作成することも、DAX を使用して独自の数式を定義することもできます。メジャーは、ピボットテーブルの [値] 領域で使用します。計算結果をピボットテーブルの別の領域に配置する場合は、計算列を使用します。

数式の基本

PowerPivot for Excel には、カスタムの計算を作成するための DAX という新しい数式言語が用意されています。DAX を使用すると、ユーザーは PowerPivot テーブル内および Excel ピボットテーブル内でカスタムの計算を定義できます。DAX には、Excel の数式で使用される関数と、リレーショナル データでの作業と動的な集計用に設計された関数があります。詳細については、「Data Analysis Expressions (DAX) の概要」を参照してください。

数式は複雑にすることもできますが、次の表には、PowerPivot 計算列で使用できる基本的な数式を示しています。

数式

説明

=TODAY()

今日の日付をすべての行の列に挿入します。

=3

値 3 を列のすべての行に挿入します。

=[Column1] + [Column2]

同じ行の [Column1] と [Column2] の値を加算して、同じ行の計算列に結果を格納します。

Microsoft Excel での数式作成と同様に、計算列用に PowerPivot 数式を作成できます。メジャー用の数式は、[メジャーの設定] ダイアログ ボックス (標準集計) または [メジャーの設定] ダイアログ ボックス (カスタム集計) を使用して作成します。

数式を作成する際は、次の手順に従います。

  1. 各数式は等号から始める必要があります。

  2. 関数名を入力または選択するか、式を入力することができます。

  3. 目的の関数または名前の最初の数文字を入力すると、オートコンプリートによって使用可能な関数、テーブル、および列の一覧が表示されます。Tab キーを押して、オートコンプリートの一覧の項目を数式に追加します。

  4. [Fx] ボタンをクリックすると、使用可能な関数の一覧が表示されます。ボックスの一覧から関数を選択するには、方向キーを使用して項目を強調表示してから、[OK] をクリックして数式に関数を追加します。

  5. テーブルと列のボックスの一覧から選択するか、値を入力して、関数の引数を指定します。

  6. 構文エラーをチェックします。すべてのかっこが閉じられていることと、列、テーブル、および値が正しく参照されていることを確認してください。

  7. Enter キーを押して数式を確定します。

    注意

    計算列の場合は、数式を確定するとすぐに、列に値が格納されます。メジャーの場合は、Enter キーを押すとメジャー定義が保存され、そのメジャーが新しければ、PowerPivot によってピボットテーブルの [値] 領域にそのメジャーが自動的に追加されます。

単純な数式の作成

次の例では、表内のデータに基づいて、単純な数式を使用した計算列を作成する方法を示します。

SalesDate

Subcategory

Product

Sales

Quantity

1/5/2009

Accessories

Carrying Case

254995

68

1/5/2009

Accessories

Mini Battery Charger

1099.56

44

1/5/2009

Digital

Slim Digital

6512

44

1/6/2009

Accessories

Telephoto Conversion Lens

1662.5

18

1/6/2009

Accessories

Tripod

938.34

18

1/6/2009

Accessories

USB Cable

1230.25

26

単純な数式を使用した計算列を作成するには

  1. 上の表のデータ (表見出しを含む) を選択およびコピーします。

  2. PowerPivot ウィンドウの [ホーム] タブで、[貼り付け] をクリックします。

  3. [貼り付けプレビュー] ダイアログ ボックスで [OK] をクリックします。

  4. [デザイン] タブの [列] グループで、[追加] をクリックします。

  5. テーブルの上にある数式バーに、以下の数式を入力します。

    =[Sales] / [Quantity]
  6. Enter キーを押して数式を確定します。

    すべての行の計算列に値が入力されます。

オートコンプリート機能の使用に関するヒント

  • 数式のオートコンプリート機能は、関数が入れ子になっている既存の数式の途中で使用できます。挿入ポイントの直前のテキストが、ドロップダウン リストに値を表示するために使用されます。挿入ポイントより後ろのすべてのテキストは変更されません。

  • PowerPivot には、関数の閉じかっこを追加する機能や、かっこを自動的に照合する機能はありません。数式を保存または使用するには、各関数の構文に誤りがないことをユーザー自身が確認する必要があります。PowerPivot ではかっこが強調表示されるので、適切な閉じかっこの存在を容易に確認できます。

オートコンプリート機能の詳細については、「計算列の作成」および「メジャーの作成」を参照してください。

テーブルと列の操作

PowerPivot テーブルは、外観が Excel テーブルと似ていますが、データや数式を処理する方法は異なります。

  • 数式では、テーブルおよび列のみを使用できます。個々のセル、範囲参照、配列などは使用できません。

  • 数式では、リレーションシップを使用して関連するテーブルから値を取得できます。取得した値は、常に現在の行の値に関連しています。

  • Data Analysis Expressions (DAX) 数式を Excel ブックに貼り付けることはできません。その逆もできません。

  • Excel ワークシートとは異なり、不規則データを含めることはできません。テーブル内の各行には同じ数の列が含まれている必要があります。ただし、一部の列には空の値を含めることができます。Excel データ テーブルと PowerPivot データ テーブルを相互に交換することはできませんが、Excel テーブルに PowerPivot からリンクし、Excel データを PowerPivot に貼り付けることは可能です。詳細については、「Excel のリンク テーブルを使用したデータの追加」および「PowerPivot へのデータのコピーと貼り付け」を参照してください。

数式および式でのテーブルと列の参照

テーブルと列はその名前を使用して参照できます。たとえば、次の数式は完全修飾名を使用して 2 つのテーブルの列を参照する方法を示しています。

=SUM('New Sales'[Amount]) + SUM('Past Sales'[Amount])

PowerPivot for Excel で数式を評価すると、最初に全般的な構文がチェックされます。その後、指定した列およびテーブルの名前がチェックされ、現在のコンテキストに適合しているかどうか照合されます。名前があいまいな場合や、列またはテーブルが見つからない場合は、数式がエラーになります (エラーが発生したセルでは、データ値の代わりに #ERROR という文字列が表示されます)。テーブル、列、およびその他のオブジェクトの名前付けに関する要件の詳細については、「PowerPivot の DAX 構文の仕様」の「名前付けに関する要件」を参照してください。

注意

コンテキストは PowerPivot ブックの重要な機能で、動的な数式の作成を可能にします。コンテキストは、ブック内のテーブル、テーブル間のリレーションシップ、および適用されたフィルターによって決定されます。詳細については、「DAX の数式のコンテキスト」を参照してください。

テーブルのリレーションシップ

テーブルは他のテーブルに関連付けることができます。リレーションシップを作成すると、別のテーブルのデータを参照して関連する値を使用し、複雑な計算を行うことができます。たとえば、計算列を使用して、現在の再販業者に関連する出荷レコードをすべて検索してから、それぞれの輸送費を合計することができます。これにより、パラメーター化クエリと同じように、現在のテーブル内の各行に対して異なる合計を計算できます。

DAX 関数の多くでは、参照先の列を見つけて意味のある結果を返すために、テーブル間のリレーションシップが必要になります。リレーションシップを特定しようとする関数もありますが、最適な結果を得るには、可能な限りリレーションシップを作成するようにしてください。詳細については、次のトピックを参照してください。

ピボットテーブルを使用する場合は、集計データを正しく計算するために、ピボットテーブルで使用されるすべてのテーブルを関連付けることが特に重要になります。詳細については、「ピボットテーブルでのリレーションシップの操作」を参照してください。

数式内のエラーのトラブルシューティング

計算列を定義するときにエラーが発生した場合は、その数式に構文エラーまたはセマンティック エラーが含まれている可能性があります。

構文エラーの解決は非常に簡単です。かっこやコンマが不足している場合がよくあります。個々の関数の構文については、「PowerPivot の DAX 関数リファレンス」を参照してください。

構文は正しいが、参照される値または列が数式のコンテキストで意味をなさないときには、別のエラーが発生します。このようなセマンティック エラーは次のような問題が原因で生じている可能性があります。

  • 数式が、存在しない列、テーブル、または関数を参照している。

  • 数式は正しいように見えるが、PowerPivot データ エンジンがデータをフェッチしたときに型の不一致が検出され、エラーが発生した。

  • 数式が関数に渡したパラメーターの数または型が正しくない。

  • 数式が参照している別の列にエラーがあるため、その値が無効になる。

  • 数式が、処理されていない列を参照する。ブックを手動モードに変更し、変更を行い、その後データまたは計算を更新していない場合にこの状況が発生します。

最初の 4 つのケースでは、DAX は無効な数式を含んでいる列全体にフラグを設定します。最後のケースでは、DAX は列をグレーで表示し、その列が未処理状態であることを示します。