エクセル (vr.2016) – ピボット – テーブルリレーションの関係

エクセル (vr.2016) – ピボット – テーブルリレーションの関係

エクセルのテーブルリレーションシップは1対多、1対1の関係です。そして、プライマリ (親) とセカンダリ (子) の関係があります。ピボットテーブルでは親子関係に注意しながら操作する必要があります。

リレーションシップ
リレーションシップ

トレーニング用サンプルデータはこちらからコピペできます。

 1対多のリレーションシップがあります。キー (結合句) は「住所」です。

<データテーブル setai >
 キー (結合句) の重複行はありません。プライマリデータ (親) になります。

<データテーブル masta >
 キー (結合句) には重複があります。セカンダリ (子) になります。

ピボットテーブル
ピボットテーブル

 ピボットテーブルの
・「行」へデータテーブル「setai」の「住所 (setai)」
・「Σ値」へデータテーブル「setai」の「世帯数」

 このときピボットテーブルで集計している「住所」も「世帯数」もデータテーブル「setai」のものですから、正しく集計できます。
 そもそもデータテーブル「masta」とのリレーションシップの有無は無関係です。

行を入れ替える

 ピボットテーブルの
「行」へデータテーブル「masta」の「住所 (masta)」
・「Σ値」へデータテーブル「setai」の「世帯数」

「テーブル間のリレーションシップが必要である可能性があります」という表示があらわれます。

 値の集計も正確ではありません。

自動検出または設定
既存のリレーションシップ

 リレーションシップは設定済です。従って「自動検出」「作成」のどちらも無効になります。
 ちなみに、テーブルの上下を入れ替えて設定してもダメです。エクセルが自動的にプライマリデータが下になるように設定しなおします。

 原因はプライマリデータとセカンダリデータの関係、親子関係にあります。
・プライマリデータ (親) の行でセカンダリデータ (子) の値を集計することはできる。
・セカンダリデータ (子) の行でプライマリデータ (親) の値を集計することはできない。

 これがルールです。

セカンダリデータ (子) の行でプライマリデータ (親) の値を集計する方法
メジャーの追加

 画像のようにセカンダリデータ (子) の行でプライマリ (親) の値を集計できる方法があります。
・データテーブル「masta」 (子のテーブル) を右クリック
・「メジャーの追加」を選択します。

DAX式

・「メジャーの名前」をタイプします
・「DAX」式を作成します。

=SUM(setai[世帯数])
新規メジャー

 作成したメジャーを「Σ値」へ設定して、集計が正確であれば成功です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です