Power Pivot の数式を再計算する

適用先
Excel for Microsoft 365 Excel 2024 Excel 2021

PowerPivot でデータを操作する場合、ソースからのデータの更新、集計列の数式の再計算、またはデータ モデルを使用するピボットテーブルの更新が必要になる場合があります。

この記事では、データ更新と再計算の違い、再計算のトリガー方法の概要、および再計算を制御するオプションについて説明します。

データ更新と再計算について

Power Pivot では、データの更新と再計算の両方が使用されます。

データ更新 とは、外部データ ソースから最新のデータを取得することを意味します。 Power Pivot では、外部データ ソースの変更は自動的には検出されません。 更新されたデータを取り込むには、データ モデルを更新します。

再計算 とは、数式を含むブック内のすべての列、テーブル、グラフ、ピボットテーブルを更新することです。 数式を再計算するとパフォーマンスに影響するため、各計算に関連付けられている依存関係を理解することが重要です。

重要

数式が再計算されるまで、ブックを保存または発行しないでください。

手動再計算と自動再計算

既定では、Power Pivot は処理に必要な時間を最適化しながら、必要に応じて自動的に再計算します。 再計算には時間がかかる場合がありますが、重要な作業です。 再計算中に、Power Pivot は列の依存関係をチェックし、列が変更された場合、データが無効である場合、または以前に機能していた数式にエラーが表示された場合に通知します。 ただし、特に複雑な数式や非常に大きなデータ セットを操作していて、更新のタイミングを制御したい場合は、検証を省略して手動でのみ計算を更新することを選択できます。

手動モードと自動モードの両方に利点があります。 ただし、自動再計算モードを使用してください。 このモードでは、Power Pivot メタデータの同期が維持され、データの削除、名前またはデータ型の変更、依存関係の欠落によって発生する問題を防ぐことができます。 

自動再計算の使用

自動再計算モードを使用する場合、数式の結果が変化する原因となるデータに変更を加えると、数式を含む列全体の再計算がトリガーされます。 以下を変更した場合は、常に数式の再計算が必要です。

  • 外部データ ソースの値が更新されます。
  • 数式の定義が変更されました。
  • 数式で参照されているテーブルまたは列の名前が変更される。
  • テーブル間のリレーションシップは、追加、変更、または削除されます。
  • 新しいメジャーまたは集計列が追加されます。
  • ブック内の他の数式が変更されるため、その計算に依存する列または計算を更新する必要があります。
  • 行が挿入または削除されます。
  • データ セットを更新するためにクエリを実行する必要があるフィルターを適用しました。 フィルターは、数式の中に適用することも、ピボットテーブルやピボットグラフの一部として適用することもできます。

手動での再計算の使用

再計算は手動で行うことで、準備ができるまで数式の結果を計算するコストがかからないようにできます。 手動モードは、次のような状況で特に役立ちます。

  • テンプレートを使って数式を設計していて、検証する前に数式で使用される列とテーブルの名前を変更したい場合。
  • ブック内の一部のデータが変更されたことはわかっていますが、変更されていない別の列で作業しているため、再計算を延期したい場合。
  • 多くの依存関係を持つブックで作業しており、必要な変更がすべて行われるまで再計算を延期したいと考えています。

ブックを手動計算モードに設定した場合、Power Pivot in Excel は数式の検証やチェックを実行しません。 次の結果が発生します。

  • ブックに追加した新しい数式には、エラーを含むフラグが設定されます。
  • 新しい集計列に結果は表示されません。

手動再計算用にブックを構成するには

  1. Power Pivot で、[設計]>[計算]>[計算オプション]>[手動計算モード] を選択します。
  2. すべてのテーブルを再計算するには、[計算オプション]>[今すぐ計算] を選択します。
    ブックは、数式のエラーをチェックし、結果を持つテーブルを更新します。 データの量や計算数によっては、ブックが一時的に応答しなくなることがあります。

重要

ブックを発行する前に、計算モードを [自動] に戻します。 この変更により、数式を設計するときにの問題を回避できます。

再計算のトラブルシューティング

依存関係

ある列が別の列に依存していて、その別の列の内容が何らかの方法で変更された場合、関連するすべての列を再計算する必要がある場合があります。 Power Pivot ブックに変更を加えるたびに、Excel の Power Pivot は既存の Power Pivot データを分析して再計算が必要かどうかを判断し、最も効率的な方法で更新を実行します。

たとえば、Products テーブルと ProductCategory テーブルに関連する Sales テーブルがあるとします。および Sales テーブルの数式は、他の両方のテーブルに依存します。 "商品" テーブルまたは "商品カテゴリ" テーブルに変更を加えると、[売上高] テーブルのすべての集計列が再計算されます。 この動作は、カテゴリ別または製品別に売上を合計する数式がある場合に適しています。 結果が正しいことを確認するには、データに基づいて数式を再計算する必要があります。

完全な再計算は変更された値を確認するよりも効率的であるため、Power Pivot は常にテーブルの完全な再計算を実行します。 再計算をトリガーする変更には、列の削除、列の数値データ型の変更、新しい列の追加などの大きな変更が含まれる場合があります。 ただし、列の名前の変更など、一見些細な変更によって、再計算もトリガーされる可能性があります。 この動作は、列の名前が数式の識別子として使用されるために発生します。

場合によっては、Power Pivot は、再計算から列を除外できると判断します。 たとえば、[商品] テーブルから [商品の色] などの値を検索する数式があり、[売上] テーブルの列が [数量] だった場合、[売上高] テーブルは関連していても、数式を再計算する必要はありません。 ただし、 Sales[Quantity] に依存する数式がある場合は、再計算が必要です。

依存列の再計算の順序

Power Pivot は、列を再計算する前に依存関係を計算します。 複数の列が相互に依存する場合、Power Pivot は依存関係の順序に従います。 このシーケンスにより、Power Pivot は列を正しい順序で最大速度で処理します。

取引

データの再計算または更新操作は、トランザクションとして実行されます。 更新操作の一部が失敗した場合は、残りの操作がロールバックされます。 この動作により、データが部分的に処理された状態のままになることはありません。 リレーショナル データベースのようにトランザクションを管理することはできず、チェックポイントを作成することもできません。

可変関数の再計算

NOW、RAND、TODAY などの一部の関数には固定値がありません。 パフォーマンスの問題を回避するために、クエリまたはフィルター処理を実行しても、集計列でこれらの関数を使用する場合、通常は Power Pivot がこれらの関数を再評価することはありません。 Power Pivot が再計算するのは、列全体を再計算するときにのみ、これらの関数の結果が再計算される場合のみです。 このような状況には、外部データ ソースからの更新や、これらの関数を含む数式の再評価を引き起こす手動でのデータの編集が含まれます。 ただし、集計フィールドの定義で NOW、 RAND、 TODAY などの揮発性関数を使用している場合、Power Pivot は常にそれらを再計算します。