SUMIFSと複合参照でクロス集計表を作る

LWP | SUMIFSと複合参照でクロス集計表を作る

SUMIFSと複合参照でクロス集計表を作る

売上明細を「エリア×担当者」で見比べる、ナマズさんとフナさんの集計相談

Copyright © 2026 LWP 山中 一弘

本資料は、出典を明記いただければ、商用・非商用を問わず、ご自由に複製・改変・再配布していただけます。なお、著作権表示は改変せず、そのまま記載してご利用くださいますようお願いいたします。

ストーリー

売上の明細は揃ったのに、会議で見たい「エリア別・担当者別」の比較ができません。営業のナマズさんが見たい切り口を伝え、フナさんがSUMIFSで交点を集計する方法を考えます。式を横と下へ広げたあとには、もう一つ確かめることがありました。

Excelのテーブルと標準関数を使う、説明用の物語です。図1~6は同じ5件の売上明細を扱い、図7の二つのケースはゼロの意味を比べるための別例です。

1 売上明細を、見比べる表へ

ナマズさんがエリア別・担当者別に売上を見たいと相談する。元の5件を残し、別の集計シートの行にエリア、列に担当者を並べる。

図1|元表はExcelのテーブル「売上データ」。集計シートのB5に、東京と田中の交点を求める式を入れる。

2 交点は「東京、かつ田中」

5件のうち、エリアが東京で担当者が田中の2件を選ぶ。120,000円と70,000円を足すと190,000円になる。

図2|二つの条件を両方満たす行を合計する。「東京、または田中」の集計とは異なる。

3 SUMIFSに、三つの範囲を渡す

SUMIFSに売上金額列、エリア列、担当者列を渡す。条件は左の見出し$A5と上の見出しB$4から取り、三つの範囲は同じ5行に対応させる。

図3|合計範囲を先頭に置き、そのあとへ条件範囲と条件を対で渡す。図は引数の対応図で、貼り付け用の式は記事末尾に掲載。

4 左を見る列、上を見る行を固定

左の見出しを参照する$A5はA列を固定し、上の見出しを参照するB$4は4行目を固定する。C5では$A5とC$4、B6では$A6とB$4に変わる。

図4|複合参照で、固定する方向と動かす方向を分ける。両方を完全に固定すると、交点ごとの条件が切り替わらない。

5 元表の列も、横フィルでずらさない

短い構造化参照と、同じ列名を両端に書く構造化参照を比べる。後者で横フィル時の元表の列指定を固定する。

図5|集計表の見出しを固定する$と、元表の列を固定する構造化参照は別の役割。エリア列と担当者列も同じ書き方に揃える。

6 表が埋まったら、総額を照合

東京は田中190,000円と鈴木85,000円、大阪は田中95,000円と鈴木110,000円。佐藤列と名古屋行は0円。元の5件と集計した9マスの総額はいずれも480,000円。

図6|今回の見出しは元表の全エリア・全担当者を重複なく含む。総額の一致を確かめ、代表の交点も明細へ戻って照合する。

7 「0円」と「該当なし」は分けて読む

比較用の別例。該当行がない場合はSUMIFSもCOUNTIFSも0。売上0円の行が1件ある場合はSUMIFSが0、COUNTIFSが1となる。二人は次の商品と月の集計へ話を進める。

図7|合計が0というだけでは、該当行がないとは判断できない。件数を数えると区別できる。

まとめ

ナマズさんが決めた「エリア×担当者」という切り口を、フナさんがSUMIFSの二つの条件へ置き換えました。左の見出しは列を固定、上の見出しは行を固定し、元表の列指定も横フィルでずれない形に揃えます。

表が埋まったら、元の総額と代表の交点を照合します。ゼロの意味まで説明したいときには、COUNTIFSで該当行の件数も確かめます。次に商品と月で見たいなら、まずどちらを縦・横に並べるかを決めるところから始められます。

今回の仕掛け

SUMIFSは、同じ行で複数の条件を満たす売上金額を合計します。合計範囲と条件範囲は、行数だけでなく対応する行も揃えます。元表をExcelのテーブルにしておくと、テーブルへ追加した行を構造化参照で扱えます。

$A5はA列を固定して行番号を動かし、B$4は4行目を固定して列文字を動かす複合参照です。一方、売上データ[[売上金額]:[売上金額]]は、同じ列を両端に指定して、横方向のフィルで参照列が動かないようにします。通常のコピーとフィルハンドルによる横フィルは、構造化参照の調整が同じとは限りません。

集計から漏れた見出しや重複した見出しがあると、総額の照合は崩れます。総額が一致しても、個々の交点の取り違えを見逃すことはあるため、「東京×田中」のような代表例を元の明細と照合します。売上金額は数値で入力し、エリア名や担当者名の余分な空白・表記違いも確認します。

合計0には、該当なし、0円の行、正負の金額の相殺などがあります。表示形式で0を「-」に変えても、その意味は判別できません。図7はこのうち最初の二つを比較しています。

今回の数式のサンプル

数式例 エリアと担当者が一致する売上を合計

01

=SUMIFS(

02

    売上データ[[売上金額]:[売上金額]],

03

    売上データ[[エリア]:[エリア]],$A5,

04

    売上データ[[担当者]:[担当者]],B$4

05

)

数式の説明

合計範囲は売上金額列です。エリア列が$A5の値と一致し、担当者列がB$4の値と一致する行を合計します。三つの構造化参照は同じテーブルのデータ行を指します。

入力・概要

元データ用のシートに、見出しを「エリア」「担当者」「売上金額」の順に置き、次の5件を入力します。見出しを含む範囲をExcelのテーブルに変換し、テーブル名を「売上データ」にします。金額の単位は円です。

  • 東京/田中/120000

  • 東京/鈴木/85000

  • 大阪/田中/95000

  • 東京/田中/70000

  • 大阪/鈴木/110000

別の集計シートは通常のセル範囲を使います。A4を「エリア」、B4を「田中」、C4を「鈴木」、D4を「佐藤」、A5を「東京」、A6を「大阪」、A7を「名古屋」にします。B5の数式バーへ式の全文を貼り付け、右のD5まで、続いてB5:D5を下の7行目までフィルします。

結果

期待結果は、東京行が190000・85000・0、大阪行が95000・110000・0、名古屋行が0・0・0です。B5:D7の合計は480000となり、元表5件の合計と一致します。これは掲載データと数式の読解・計算による確認で、今回新たにExcel上で実行した測定結果ではありません。

読むポイント

C5の式では担当者の条件がC$4へ、B6の式ではエリアの条件が$A6へ変わります。元表の三つの列指定は変わりません。フィル後にこの対応を見れば、どこを固定しているか確かめられます。

数式例 同じ条件に該当する行数を数える

01

=COUNTIFS(

02

    売上データ[[エリア]:[エリア]],$A5,

03

    売上データ[[担当者]:[担当者]],B$4

04

)

数式の説明

COUNTIFSには合計範囲を渡しません。エリアと担当者の条件を両方満たす行を1件ずつ数えます。条件範囲と見出しの対応は、先ほどのSUMIFSと同じです。

入力・概要

新しい「件数集計」シートに、売上集計と同じ見出しをA4:D7へ配置します。このシートのB5に式を入力し、右と下へフィルします。元の売上集計の式は残して、金額と件数を見比べます。

結果

元の5件を使うと、東京行の件数は2・1・0、大阪行は1・1・0、名古屋行は0・0・0となり、合計は5件です。図7の「0円の行が1件」は比較用の別例で、この5件に追加したデータではありません。

読むポイント

件数が0なら、この二つの条件に該当する行がありません。合計が0でも件数が1以上なら、該当する明細の金額を確認します。金額と件数を一緒に見ることで、会議でゼロの意味を説明しやすくなります。

出典メモ