エクセル (vr.2016) – マージ (結合) するのかどうか
データ表のマージには注意が必要です。1対多のマージのとき、1のデータ表に含まれる値の集計方法を変更します。
目次
データ
3種類のデータ表をこれからマージ (結合) します。
<データ表masta>
顧客マスタのようなデータです。
「会員コード」「生年月日」「住所」「年齢」
<データ表sales>
期間中の売上データです。
「日付」「会員コード」「売上売価」
<データ表setai>
住所マスタのようなデータです。
「住所」「世帯数」
マージ (結合) します
データ表「masta」を左に設定してデータ表「sales」を右へマージ (結合) します。
「日付」「売上売価」がくっつきます。
さらに、データ表「setai」マージ (結合) します。
これで完成です。
ピボットテーブル
ピボットテーブルで「住所」ごとの「売上売価」と「世帯数」を集計します。
・「売上売価」の合計はデータ表「sales」と一致します。
・「世帯数」の合計はデータ表「setai」と一致しません。
データ表「setai」をマージすると、住所の各行ごとに「世帯数」がくっつきます。
従って、ピボットで集計した「世帯数」は実際の2倍・3倍・数倍になります。
同一住所の行数×世帯数
解決方法
解決方法は「世帯数」の集計方法を「平均」または「最大」「最小」へ変更することです。
集計方法を「平均」にすると、各行の値はデータ表「setai」の値と一致します。
ところが総計が一致しません。総計も「平均」になるからです。「最大」にしたときの総計は「10」、「最小」のときの総計は「2」になります。
このような場合、そもそもマージ (結合) という手法がよかったのかどうか?
年齢のマージ (結合)
データ表「masta」の「年齢」はどうでしょうか。住所ごとに「年齢」を集計すると合計されます。
「年齢」の集計方法を「平均に」へ変更します。
これは各行の値、総計の値とも有用です。
・集計方法を「最大」にすると、住所ごとの最高齢者の年齢、全体の最高齢者の年齢がわかります。
・集計を「最小」にすると住所ごとの最年少者の年齢、全体の最年少者の年齢がわかります。
いずれも有用です。
スライサーで購入履歴がある住所だけに絞り込みます。これも有用な値です。