この記事で分かること

  • 通常のピボットテーブルが「複数の表にまたがるデータ」でなぜ詰まるのか、VLOOKUPで1テーブル化する運用の限界
  • Power Pivotを有効化し、複数テーブルをデータモデルに読み込んでリレーションシップを作る具体的な手順
  • メジャーとDAXの基本(SUM・SUMX・CALCULATE・RELATED)を、検算できる整数設例で理解する
  • 財務モデルの実務でPower Pivotが効く場面と、Power QuerySUMPRODUCTとの役割分担

結論:Power Pivotは「表を1つに結合する前に」複数テーブルのまま集計するための機能

通常のピボットテーブルは、1枚の縦持ちの表を集計元にすることが前提です。売上明細と商品マスタのように情報が複数の表に分かれている場合、多くの人はVLOOKUPやXLOOKUPで商品マスタの列を売上明細側にコピーし、1枚の巨大な表にしてからピボットを作ります。この「先に結合してから集計する」というやり方は、表の行数が数千行を超えたあたりから重くなり、商品マスタが更新されるたびに結合作業をやり直す手間も発生します。

Power Pivotは、この結合の手順そのものを省きます。売上明細と商品マスタを別々の表のままExcelのデータモデルに読み込み、両者の間に「商品コードで結びつく」というリレーションシップを1回登録しておけば、その後は表を結合しなくてもカテゴリ別・商品別の集計がそのままピボットテーブルで作れます。本稿では、この考え方を整数の設例で検算しながら、有効化の手順、リレーションシップの作り方、メジャーとDAXの基本までを扱います。

通常のピボットテーブルで詰まる場面

ピボットテーブル実務の基本で扱っているのは、すでに1枚の縦持ち表に整っているデータをどう探索するかという話です。実務ではその手前、つまり売上明細(取引ごとの行)と商品マスタ(商品コードごとのカテゴリや商品名)のように、情報が複数の表に分かれている状態から始まることが珍しくありません。このとき、カテゴリ別に売上を集計したいだけなのに、次のような回り道が必要になります。

まず売上明細の末尾に列を追加し、XLOOKUPやINDEX/MATCHで商品マスタからカテゴリを1行ずつ引き当てます。この時点で、売上明細の行数が数万行になるとルックアップ関数だけでファイルの再計算が重くなり、モデル全体の動作が遅くなる要因のひとつになります。次に、商品マスタ側で新しい商品コードが追加されたり、カテゴリ名が変更されたりするたびに、この結合列を作り直す必要があります。結合列を作り忘れたまま古いカテゴリ名でピボットを更新してしまう事故も起きやすく、集計結果の信頼性に関わります。

さらに、売上明細と商品マスタだけでなく、顧客マスタや店舗マスタまで加わる3表・4表の構成になると、結合列がどんどん横に伸びていき、どの列がどの表から来たのか追いにくくなります。Power Pivotは、この「結合してから集計する」という発想そのものを、「表の関係を登録してから集計する」という発想に置き換えることで解決します。

Power Pivotとデータモデルの位置づけ

Excelのブックには、シート上に見えるセルの領域とは別に、複数テーブルの関係を保持したまま扱える「データモデル」という裏側の領域があります。Power Pivotは、このデータモデルに対してテーブルを読み込み、リレーションシップを設定し、DAXという数式言語で集計ロジックを定義するための機能です。Power Query(取り込みと整形)とPower Pivot(関係づけと計算)は役割が異なり、実務ではPower Queryで整形したデータをそのままデータモデルに読み込むという組み合わせで使うのが一般的です。

Power PivotはWindows版Excelのアドインとして提供されている機能です。多くの環境では既定で非表示になっているため、最初に[ファイル]タブの[オプション]から[アドイン]を開き、管理欄で[COMアドイン]を選んで[設定]をクリックし、一覧から「Microsoft Power Pivot for Excel」にチェックを入れて有効化します。有効化すると、リボンに[Power Pivot]タブが追加されます。

テーブルをデータモデルに追加する方法は主に2通りです。ひとつは、Excelの表(テーブル機能で書式設定した範囲)を選択し、[挿入]タブの[ピボットテーブル]から作成する際に「このデータをデータモデルに追加する」にチェックを入れる方法です。もうひとつは、Power Queryでデータを取得・整形したあと、読み込み先の設定で「データモデルに追加する」を選ぶ方法です。複数のCSVや外部データソースを扱う場合は、後者の方がソースの更新に強い運用になります。

実践:2つの表をリレーションシップで結ぶ

以下は説明用の仮設例です。ある月の売上明細テーブル(Sales)と、商品マスタテーブル(Products)の2つが、別々のシートに存在するとします。

商品コード商品名カテゴリ
P001ノートPCハードウェア
P002モニターハードウェア
P003会計ソフトライセンスソフトウェア
P004保守サポートサービス
図:商品マスタテーブル(Products、設例)。
取引ID商品コード数量単価(円)金額(円)
T001P0013120,000360,000
T002P002525,000125,000
T003P0012120,000240,000
T004P003108,00080,000
T005P004415,00060,000
T006P002625,000150,000
T007P003158,000120,000
T008P0011120,000120,000
図:売上明細テーブル(Sales、設例)。金額=数量×単価で、内訳確認用に記載。

この2つの表をデータモデルに読み込んだあと、リレーションシップは次の手順で作ります。

手順
①[Power Pivot]タブから[管理]をクリックしてPower Pivotウィンドウを開く
②画面右上の表示切り替えで[ダイアグラムビュー]を選ぶ
③Salesテーブルの「商品コード」列を、Productsテーブルの「商品コード」列までドラッグ&ドロップする
④自動的にリレーションシップの線が引かれる(多側がSales、1側がProducts)

ここでの注意点は、Excelはリレーションシップを作成する際に両方の列のデータ型が一致しているかどうかは確認しますが、実際に対応するデータが存在するかまでは検証しない、という点です。商品コードの表記ゆれ(半角・全角の違いなど)が残ったままリレーションシップを作ると、対応する行が見つからずにピボットの集計から漏れてしまいます。リレーションシップを作る前に、Power Query側で表記を統一しておくと事故を防げます。

図1:VLOOKUPで1テーブル化する運用とデータモデルの違い 従来:先に1テーブルへ結合 売上明細(表) +XLOOKUPでカテゴリ列を追加 結合済みの1枚の巨大な表 (商品マスタの内容を毎行に複製) ピボットテーブルで集計 (マスタ更新のたびに列を作り直し) 行数が増えるほど重くなり、更新のたびに手戻りが発生 Power Pivot:関係を1回登録 売上明細テーブル 商品マスタテーブル データモデル(商品コードでリレーション) 表はそのまま・結合しない ピボットテーブルで集計 (マスタ更新は登録し直し不要) 関係は1回登録すれば、行数が増えても作り直し不要 同一の売上明細・商品マスタ設例を、2つの運用方法で扱った場合の比較
図:VLOOKUPによる事前結合と、Power Pivotのリレーションシップによる運用の違い(設例)。

メジャーとDAXの基本

リレーションシップができると、ピボットテーブルのフィールドリストにSalesとProductsの両方の列が並び、Productsの「カテゴリ」を行ラベルに置くだけで、Sales側の金額をカテゴリ別に自動集計できます。ここで使う集計の中身が「メジャー」です。メジャーの作り方は主に4通りあります。ピボットの値エリアに数値列をドラッグすると自動生成される暗黙的メジャー、Power Pivotウィンドウで列を選び[計算]から[オートSUM]を使う方法、計算領域に「メジャー名:数式」の形で直接入力する方法、そして[Power Pivot]タブの[メジャー]から[新しいメジャー]を選ぶ方法です。SUM・AVERAGEなどの標準的な集計は暗黙的メジャーとしてピボット内だけで完結しますが、複数のテーブルをまたぐ計算や条件付きの集計をしたい場合は、DAXで明示的にメジューを定義します。

今回の設例のようにSalesテーブルに「金額」の列を物理的に持たせず、数量と単価から都度計算したい場合はSUMXを使います。


売上金額 := SUMX(Sales, Sales[数量] * Sales[単価])
Salesテーブルの各行について「数量×単価」を計算してから合計するという意味です。8行それぞれの金額(360,000/125,000/240,000/80,000/60,000/150,000/120,000/120,000)を合計すると1,255,000円になり、これがこのメジャーの値と一致します。

カテゴリ別に絞り込んだ集計をしたい場合は、CALCULATE関数で条件を追加します。


ハードウェア売上 := CALCULATE([売上金額], Products[カテゴリ] = “ハードウェア”)
ハードウェアに分類されるのはP001(ノートPC)とP002(モニター)です。該当する取引はT001・T003・T008(P001)とT002・T006(P002)で、金額は360,000+240,000+120,000+125,000+150,000=995,000円になります。

カテゴリ売上金額(円)
ハードウェア995,000
ソフトウェア200,000
サービス60,000
合計1,255,000
図:Productsの「カテゴリ」を行ラベルに置き、売上金額メジャーを値に置いたピボットの出力(設例)。995,000+200,000+60,000=1,255,000で総額と一致することを検算済み。

ソフトウェア(P003)はT004とT007で80,000+120,000=200,000円、サービス(P004)はT005のみで60,000円です。3カテゴリの合計995,000+200,000+60,000は1,255,000円となり、SUMXで求めた総額と一致します。ここで重要なのは、Sales側に「カテゴリ」という列を一切追加していない点です。リレーションシップがあるだけで、Productsの列をそのままフィルター条件や行ラベルとして使えます。逆に、Salesの各行にカテゴリの値を計算列として持たせたい場合はRELATED関数を使います。


カテゴリ(計算列) = RELATED(Products[カテゴリ])
Salesは「多」側のテーブルなので、RELATEDで「1」側のProductsから対応する1件の値を取得できます。逆方向(1側から多側の値をまとめて取る)にはRELATEDTABLEを使います。

関数構文の型用途
SUM=SUM(テーブル[列])既存の1列をそのまま合計する
SUMX=SUMX(テーブル, 式)行ごとに式を計算してから合計する(数量×単価など)
CALCULATE=CALCULATE(式, 条件)既存のメジャーに絞り込み条件を追加して再評価する
RELATED=RELATED(関連テーブル[列])多側の行から、リレーションシップ先の1側の値を1件取得する
COUNTROWS=COUNTROWS(テーブル)条件に合致する行数を数える
図:本稿で扱ったDAX関数の早見表。

財務モデル実務での使いどころ

財務モデルの実務では、月次の試算表からHistoricalsを作る作業のように、勘定科目マスタと複数月ぶんの試算表を突き合わせる場面でPower Pivotが効きます。各月の試算表を別々のテーブルとしてデータモデルに読み込み、勘定科目マスタとリレーションさせておけば、月が増えるたびに列を継ぎ足す必要がなく、ピボット側の行ラベルを差し替えるだけで期間比較ができます。数千行規模のトランザクションデータを分類別に集計する場面では、SUMPRODUCTを使った配列計算で対応することもできますが、SUMPRODUCTは数式が置かれたセルの範囲を毎回スキャンする一方、Power PivotのメジャーはデータモデルというExcel内の別エンジン上で評価されるため、行数が大きい場合の集計はメジャーに任せたほうが数式の見通しがよくなります。逆に、対象が数百行程度で1回限りの集計であれば、データモデルを組む手間の方が大きく、従来のVLOOKUPやSUMPRODUCTで十分なケースも多いです。

リレーションシップとDAXは、自分の設例で組んでみないと身につかない

本稿の数値は説明用の仮設例ですが、実際に自分の手元のExcelでこの2つの表を作り、リレーションシップを引いてSUMXの結果が本文の数値と一致するかを確認してみると、フィルターの伝播という感覚がつかみやすくなります。Excel実務全般の教材では、こうした集計・整形の実装技術をまとめて扱っています。

→ Excel実務の教材を見る

よくある質問(FAQ)

Q. Power PivotはExcelにいつでも入っていますか。
A. Power PivotはWindows版Excelに用意されている機能で、多くの環境では既定でリボンに表示されていません。[ファイル]→[オプション]→[アドイン]からCOMアドインとして有効化する必要があります。Mac版Excelにはデータモデルの仕組み自体がなく、Power Pivotは利用できません。

Q. リレーションシップを作らずに複数テーブルをピボットに使うとどうなりますか。
A. テーブル間の関係が登録されていないと、フィルターや行ラベルの値が正しく他方のテーブルへ伝わらず、意図しない集計結果になったり、Excel側でリレーションシップの自動検出を促すメッセージが出たりします。テーブルを追加した時点で、必ずダイアグラムビューでリレーションシップの有無を確認する習慣が安全です。

Q. VLOOKUPで結合したほうが早い場合はありますか。
A. あります。対象が数百行程度で、今回限りの集計であれば、データモデルとリレーションシップを組む手間の方が大きくなることがあります。毎月・毎週など繰り返し使う集計で、かつテーブルが複数に分かれている場合にPower Pivotの効果が出やすくなります。

Q. 計算列とメジャーはどう使い分けますか。
A. 計算列(RELATEDなど)はテーブルの各行に固定の値を持たせたい場合に使い、その分だけデータモデルの容量を消費します。メジャー(SUMXやCALCULATEなど)はピボットで表示するたびにその場で計算されるため、行に値を保存せずに済み、条件を変えた集計にも柔軟に対応できます。行ごとの分類が目的なら計算列、集計値が目的ならメジャーが基本の使い分けです。

まとめ

Power Pivotは、複数の表を1枚に結合してから集計するのではなく、表同士の関係をデータモデルに登録し、その関係をたどって集計するための機能です。ダイアグラムビューでリレーションシップを引く操作自体は数クリックで終わりますが、その先でSUMXやCALCULATE、RELATEDといったDAX関数の考え方を理解しておくと、計算列とメジャーの使い分けや、条件付き集計の組み立てがスムーズになります。今回の整数設例のように、自分で数値を検算しながら試すことが、この機能を実務で使いこなす一番の近道です。

Power Query・DAX関数を含めたExcel実務の体系を確認する

本稿で扱ったリレーションシップとDAXの基本は、Power Queryによるデータ取込・整形と組み合わせて初めて実務の速度に効いてきます。データ取込から集計・分析までの一連の実装技術を通しで確認したい場合は、教材の該当セクションを参照してください。

→ Excel実務の教材を見る

出典・参考(2026年8月確認)

※本記事は教育目的の一般的な解説であり、法務・税務・投資助言ではありません。設例は理解のための仮設例です。