エクセル (vr.2016) – マージ (結合) するのかどうか

エクセル (vr.2016) – マージ (結合) するのかどうか

データ表のマージには注意が必要です。1対多のマージのとき、1のデータ表に含まれる値の集計方法を変更します。

データ
データ

 3種類のデータ表をこれからマージ (結合) します。

<データ表masta>
 顧客マスタのようなデータです。
 「会員コード」「生年月日」「住所」「年齢」

<データ表sales>
 期間中の売上データです。
 「日付」「会員コード」「売上売価」

<データ表setai>
 住所マスタのようなデータです。
 「住所」「世帯数」

マージ (結合) します
左外部結合

 データ表「masta」を左に設定してデータ表「sales」を右へマージ (結合) します。

左外部結合結果

 「日付」「売上売価」がくっつきます。

さらに「setai」をマージ

 さらに、データ表「setai」マージ (結合) します。

マージ完成

 これで完成です。

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

 ピボットテーブルで「住所」ごとの「売上売価」と「世帯数」を集計します。

・「売上売価」の合計はデータ表「sales」と一致します。
・「世帯数」の合計はデータ表「setai」と一致しません。

「世帯数」のマージ結果

 データ表「setai」をマージすると、住所の各行ごとに「世帯数」がくっつきます。
 従って、ピボットで集計した「世帯数」は実際の2倍・3倍・数倍になります。
 同一住所の行数×世帯数

解決方法
平均

 解決方法は「世帯数」の集計方法を「平均」または「最大」「最小」へ変更することです。

総計

 集計方法を「平均」にすると、各行の値はデータ表「setai」の値と一致します。
 ところが総計が一致しません。総計も「平均」になるからです。「最大」にしたときの総計は「10」、「最小」のときの総計は「2」になります。

 このような場合、そもそもマージ (結合) という手法がよかったのかどうか?

年齢のマージ (結合)
年齢

 データ表「masta」の「年齢」はどうでしょうか。住所ごとに「年齢」を集計すると合計されます。

平均年齢

 「年齢」の集計方法を「平均に」へ変更します。
 これは各行の値、総計の値とも有用です。

・集計方法を「最大」にすると、住所ごとの最高齢者の年齢、全体の最高齢者の年齢がわかります。

・集計を「最小」にすると住所ごとの最年少者の年齢、全体の最年少者の年齢がわかります。

 いずれも有用です。

購入者の住所別平均年齢

 スライサーで購入履歴がある住所だけに絞り込みます。これも有用な値です。