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

1対多のリレーションシップがあります。キー (結合句) は「住所」です。
<データテーブル setai >
 キー (結合句) の重複行はありません。プライマリデータ (親) になります。
<データテーブル masta >
 キー (結合句) には重複があります。セカンダリ (子) になります。
ピボットテーブル

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

 ピボットテーブルの
・「行」へデータテーブル「masta」の「住所 (masta)」
・「Σ値」へデータテーブル「setai」の「世帯数」
「テーブル間のリレーションシップが必要である可能性があります」という表示があらわれます。
値の集計も正確ではありません。
自動検出または設定

 リレーションシップは設定済です。従って「自動検出」「作成」のどちらも無効になります。
 ちなみに、テーブルの上下を入れ替えて設定してもダメです。エクセルが自動的にプライマリデータが下になるように設定しなおします。
 原因はプライマリデータとセカンダリデータの関係、親子関係にあります。
・プライマリデータ (親) の行でセカンダリデータ (子) の値を集計することはできる。
・セカンダリデータ (子) の行でプライマリデータ (親) の値を集計することはできない。
これがルールです。
セカンダリデータ (子) の行でプライマリデータ (親) の値を集計する方法

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

・「メジャーの名前」をタイプします
・「DAX」式を作成します。
=SUM(setai[世帯数])

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


コメントを残す