PowerPivot での計算式の作成

適用先
Excel for Microsoft 365 Excel 2024 Excel 2021 Excel 2019 Excel 2016

この記事では、Power Pivot の 集計列メジャー の両方の計算式を作成する基礎について説明します。 DAX を初めて使用する場合は、「クイックスタート: DAX の基本を 30 分で学ぶ」を必ずチェックしてください。

数式の基本

Power Pivot には、Power Pivot テーブルと Excel ピボットテーブルでカスタム計算を作成するためのデータ分析式 (DAX) が用意されています。 DAX には、Excel の数式で使用される一部の関数と、リレーショナル データを処理して動的集計を実行するために設計された追加の関数が含まれています。

集計列で使用できる基本的な数式を次に示します。

数式 説明
=TODAY() 列のすべての行に今日の日付を挿入します。
=3 列のすべての行に値 3 を挿入します。
=[Column1] + [Column2] [列 1] と [列 2] の同じ行の値を追加し、集計列の同じ行に結果を入れます。

Microsoft Excel で数式を作成するのと同じように、集計列の PowerPivot 数式を作成できます。

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

  • 各数式は、先頭に等号を入力する必要があります。
  • 関数名を入力または選択するか、式を入力できます。
  • 関数または名前の最初の数文字を入力し始めると、使用可能な関数、テーブル、列の一覧がオートコンプリートによって表示されます。 Tab キーを押して、オートコンプリート一覧の項目を数式に追加します。
  • [ Fx ] ボタンをクリックすると、使用可能な関数の一覧が表示されます。 ドロップダウン リストから関数を選ぶには、方向キーを使用して項目を強調表示し、[ OK] をクリックして関数を数式に追加します。
  • 引数を関数に指定するには、使用可能なテーブルと列のドロップダウン リストから引数を選択するか、値または別の関数を入力します。
  • 構文エラーを確認する: すべてのかっこが閉じられ、列、テーブル、値が正しく参照されていることを確認します。
  • Enter キーを押して式を確定します。

集計列では、数式を受け入れるとすぐに、列に値が入力されます。 メジャーで、Enter キーを押すとメジャー定義が保存されます。

簡単な数式を作成する

簡単な数式を使用して集計列を作成するには

SalesDateサブカテゴリ製品販売数量1/5/2009アクセサリーキャリングケース254995681/5/2009アクセサリーミニバッテリー充電器1099.56441/5/2009デジタルスリムデジタル6512441/6/2009アクセサリー望遠変換レンズ1662.5181/6/2009アクセサリー三脚938.34181/6/2009アクセサリーUSBケーブル1230.2526
  1. 上の表から、テーブルの見出しを含むデータを選択してコピーします。
  2. Power Pivot で、[ ホーム>貼り付け] をクリックします。
  3. [ 貼り付けプレビュー] ダイアログ ボックスで、[ OK] をクリックします。
  4. [デザイン]>[列]>[追加] をクリックします。
  5. テーブルの上にある数式バーに、次の数式を入力します。
    =[Sales] / [Quantity]
  6. Enter キーを押して式を確定します。
その後、すべての行の新しい集計列に値が入力されます。

オートコンプリート使用のヒント

  • 入れ子になった既存の関数の途中で、数式オートコンプリートを使用できます。 挿入ポイントの直前のテキストに基づいてドロップダウン リストの値が表示され、挿入ポイントの後のすべてのテキストは元のまま残ります。
  • Power Pivot は、関数の閉じかっこを追加したり、かっこを自動的に一致させたりしません。 各関数の構文が正しいことを確認する必要があります。そうしないと、数式を保存したり使用したりできません。 Power Pivot ではかっこが強調表示されます。これにより、かっこが適切に閉じられているかどうかをチェックしやすくなります。

テーブルと列の操作

Power Pivot テーブルはExcel の表に似ていますが、データと数式の処理方法が異なります。

  • Power Pivot の数式はテーブルと列でのみ機能し、個々のセル、範囲参照、配列では機能しません。
  • 数式では、リレーションシップを使って関連テーブルから値を取得できます。 取得される値は常に、現在の行の値に関連付けられます。
  • Power Pivot の数式を Excel ワークシートに貼り付けたり、その逆を貼り付けたりすることはできません。
  • Excel ワークシートのように、不規則なデータや "不規則" なデータを含めることはできません。 テーブルの各行に同じ数の列を含める必要があります。 ただし、一部の列で空の値を含めることができます。 Excel のデータ テーブルと Power Pivot のデータ テーブルは互換性がありませんが、Power Pivot から Excel テーブルにリンクして、Excel データを Power Pivot に貼り付けることはできます。 詳細については、「 リンク テーブルを使用したデータ モデルへのワークシート データの追加 」および 「Power Pivot のデータ モデルに行をコピーして貼り付ける」を参照してください。

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

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

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

数式が評価される場合、Power Pivot はまず一般的な構文をチェックしてから、指定した列およびテーブルの名前を、現在のコンテキストで使用可能な列およびテーブルに対して照合します。 名前があいまいな場合、または列やテーブルが見つからない場合は、数式にエラー (エラーが発生するセルのデータ値ではなく #ERROR 文字列) が返されます。 テーブル、列、およびその他のオブジェクトの名前付け要件の詳細については、「 Power Pivot の DAX 構文仕様における命名要件」を参照してください。

コンテキストは、動的な数式を作成できる Power Pivot データ モデルの重要な機能です。 コンテキストは、データ モデルのテーブル、テーブル間の関係、適用されているフィルターによって決まります。 詳細については、「DAX の数式のコンテキスト」を参照してください。

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

テーブルは他のテーブルに関連付けることができます。 リレーションシップを作成することで、別のテーブルでデータを検索したり、関連する値を使用して複雑な計算を実行したりできます。 たとえば、集計列を使用して、現在のリセラーに関連するすべての出荷レコードを検索し、それぞれの配送コストを合計できます。 この効果はパラメーター化されたクエリに似ており、現在のテーブルの行ごとに異なる合計を計算できます。

多くの DAX 関数では、参照した列を検索して意味のある結果を返すために、テーブル間または複数のテーブルの間にリレーションシップが存在する必要があります。 他の関数は関係の識別を試みます。ただし、最良の結果を得るには、可能な限り常に関係を作成する必要があります。

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

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

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

一番簡単に解決できるのは構文エラーです。 多くの場合、かっこやカンマが抜けています。 個々の関数の構文については、「 DAX 関数リファレンス」を参照してください。

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

  • 数式が、存在しない列、テーブル、または関数を参照しています。
  • 数式は正しいように見えますが、PowerPivot がデータを取得するときに型の不一致が検出され、エラーが発生します。
  • 数式から関数に、誤った数値または型のパラメーターが渡されています。
  • 数式がエラーを含む別の列を参照しているため、その値が無効になっています。
  • 数式は、処理されていない列を参照しています。 これは、ブックを手動モードに変更し、変更を加えた後、データを更新したり計算を更新したりしなかった場合に発生することがあります。

1 つめから 4 つめのケースでは、DAX により、列全体に無効な数式が含まれているというフラグが設定されます。 最後のケースでは、DAX はこの列を灰色で表示し、列が未処理の状態であることを示します。