複数条件集計の基本|「何を」「どこで」「どう集計するか」を整理する
Excelで複数条件の集計をサクッと作れると、日々の報告や売上管理が一気に楽になります。ただ、いきなり関数やピボットに飛びつくと「条件がズレて数字が合わない」「後から条件追加できず作り直し」になりがち。まずは集計の設計図を作るのが最短です。
整理すべきはシンプルに3つ。「何を」「どこで」「どう集計するか」です。
- 何を:合計したい数値(例:売上金額、工数、交通費)/数えたい対象(例:案件数、問合せ数)
- どこで:元データの範囲(例:A2:F500)と、条件に使う列(例:日付、部署、担当、商品)
- どう集計するか:合計・件数・平均・最大最小、さらに「条件はANDか、ORか」
たとえば「営業部のうち、2025年1月に、担当が田中の売上合計」を出したいなら、条件は3つでAND(全部満たす)です。逆に「東京 or 大阪」のようなOR条件は、作り方が変わるのでこの時点で見抜けるのが重要です。
次に、元データ側の前提を整えます。複数条件集計がうまくいかない原因の多くは、関数の知識不足ではなくデータの持ち方にあります。
- 見出し行があり、1行=1レコード(1件の取引・1件の申請など)になっている
- 条件に使う項目が列として分かれている(「部署-担当」を1セルに混ぜない)
- 日付は日付、金額は数値で入っている(文字列の「1000」「2025/1/1」要注意)
そして「集計結果をどこに置くか」も先に決めます。おすすめは、シート上に小さな集計エリアを作って、条件の入力セルと結果セルを分けること。たとえば次のようなイメージです。
| 項目 | 入力 |
|---|---|
| 部署 | B2(例:営業) |
| 担当 | B3(例:田中) |
| 期間(開始) | B4(例:2025/1/1) |
| 期間(終了) | B5(例:2025/1/31) |
| 売上合計 | B7(結果) |
こうしておくと、2章で紹介するSUMIFS/COUNTIFSなどの関数は「条件セルを参照するだけ」になり、後から条件が増えても拡張しやすいです。さらに、上司から「来月分も同じ形で」「担当別に横展開して」と言われても、集計エリアをコピーして条件だけ差し替えれば対応できます。
まとめると、複数条件集計は関数より先に設計が勝負です。「何を集計し、条件は何で、元データのどの列を使うか」を先に言語化できれば、次章の関数選びも迷いません。
関数でスマートに集計|SUMIFS/COUNTIFS/AVERAGEIFSの使い分けと定番パターン
1章で「条件セル」と「結果セル」を分けた集計エリアを作れたら、次は関数で一気に自動化します。複数条件の集計でまず覚えるべきは、IFS系の3兄弟です。
- SUMIFS:条件に合う行だけ「合計」
- COUNTIFS:条件に合う行だけ「件数」
- AVERAGEIFS:条件に合う行だけ「平均」
基本の形は共通で、(集計する範囲)+(条件範囲と条件)をペアで追加していきます。たとえば、元データが次の列だとします。
- A列:日付
- B列:部署
- C列:担当
- D列:売上金額
集計エリアが「部署=B2、担当=B3、開始日=B4、終了日=B5、売上合計=B7」のとき、売上合計は次のように書けます。
=SUMIFS($D:$D,$B:$B,$B$2,$C:$C,$B$3,$A:$A,">="&$B$4,$A:$A,"<="&$B$5)
ポイントは2つ。
- 期間条件は">="&開始日のように、記号とセルをつなぐ
- 条件は「部署→担当→日付」のように、後で読み返して分かる順番で並べる(ミス防止)
同じ条件で「件数(何件売れたか)」を出したいなら、合計対象を売上金額ではなく、数えたい列にします。売上行数を数えるなら日付列など、必ず入っている列が安全です。
=COUNTIFS($B:$B,$B$2,$C:$C,$B$3,$A:$A,">="&$B$4,$A:$A,"<="&$B$5)
「平均単価」を出したいならAVERAGEIFS。たとえば売上金額D列の平均をとるなら次です。
=AVERAGEIFS($D:$D,$B:$B,$B$2,$C:$C,$B$3,$A:$A,">="&$B$4,$A:$A,"<="&$B$5)
また、実務でよく使う定番パターンも押さえておくと速いです。
- ワイルドカード:部分一致(例:「東京支店◯◯」をまとめたい)
=SUMIFS($D:$D,$B:$B,"*東京*") - 不一致:特定の値を除外(例:キャンセル除外)
=COUNTIFS($E:$E,"<>キャンセル") - OR条件:IFSは基本ANDなので、ORは「足し算」で作る(例:東京 or 大阪)
=SUMIFS($D:$D,$F:$F,"東京")+SUMIFS($D:$D,$F:$F,"大阪")ORが増えるなら、3章のピボットや、別途「条件表」を作る設計に寄せた方が運用が楽です。
最後に、20代のうちに身につけたい地味に効くコツ。参照は列全体よりテーブル参照がベターです(詳細は5章)。列が増減しても壊れにくく、チーム共有のファイルでも事故が減ります。まずは今日から、SUMIFS/COUNTIFS/AVERAGEIFSを「条件セル参照」で書いて、集計を“作業”から“仕組み”に変えていきましょう。
ピボットテーブルで一気に可視化|複数条件×集計の最短ルート(スライサー活用含む)
SUMIFS/COUNTIFSで「狙った数字」を出せるようになったら、次に欲しくなるのが全体像の把握です。部署別・担当別・月別…と視点を切り替えるたびに関数を増やすのは正直しんどい。そこで最短ルートになるのがピボットテーブル。複数条件の集計を「組み替える」作業が、ドラッグ&ドロップで終わります。
まず大前提。ピボットは1章で整えた「1行=1レコード」の縦持ちデータと相性抜群です。準備できたら次の手順で作れます。
- 元データ範囲をクリック
- [挿入]→[ピボットテーブル]
- 配置先(新規シート推奨)を選んでOK
たとえば列が「日付/部署/担当/商品/売上金額」なら、ピボットの設計はこう考えると速いです。
- 行:切り口(例:担当)
- 列:比較軸(例:月)
- 値:集計したい数値(例:売上金額の合計、件数)
- フィルター:全体条件(例:部署、商品カテゴリ)
具体例として、担当×月の売上表を作るなら、行に「担当」、列に「日付(後で月にグループ化)」、値に「売上金額(合計)」を入れるだけ。日付が日付として認識されていれば、日付セルを右クリック→[グループ化]→「月(必要なら年も)」で月次集計にできます。これだけで「2025年1月の田中の売上」も、「担当別の推移」も同じピボット内で見られるようになります。
さらに強いのが複数条件の掛け合わせ。関数だとAND条件を丁寧に追加していきましたが、ピボットでは「部署」「商品」「ステータス」などをフィルターに置いたり、次に紹介するスライサーで選ぶだけで、集計対象が瞬時に切り替わります。
スライサーで「条件入力」を爆速にする
ピボットの弱点は、フィルターが地味で操作ミスが起きやすいこと。ここを解決するのがスライサーです。導入手順は簡単で、ピボットをクリック→[ピボットテーブル分析]→[スライサーの挿入]→(部署、担当、商品など)にチェック。
スライサーを置くと、ボタンで条件を選べるので「今どの条件で見ているか」が一目で分かります。複数選択(Ctrl)もでき、条件の切り替えもワンクリック。20代のサラリーマンが上司に呼ばれて「この部署だけ」「この商品だけ」と追加質問されても、その場で切り替えられます。
- 部署×担当×月…のように条件が増えるほど、スライサーの価値が上がる
- 「フィルターの戻し忘れ」で数字がズレる事故を減らせる
ピボットを実務で使い切るための小ワザ
- 値の表示形式:ピボットは見た目が崩れがち。値フィールドの設定→表示形式で「#,##0円」などを指定
- 集計方法の切替:「合計」だけでなく「件数」「平均」も、値フィールドの設定で即変更できる
- 更新:元データを追加したら、ピボット上で右クリック→[更新](より安全にするなら、データをテーブル化しておくのがベター。詳細は5章)
関数は「決まった形の集計を自動化」するのが得意で、ピボットは「切り口を変えながら探索」するのが得意です。複数条件×集計を最短で回すなら、まずピボットで全体を掴み、必要な数字だけを関数で固定する——この使い分けが、実務スピードを一段上げます。
実務でハマりがちな落とし穴|空白・文字列数値・日付・重複・エラーへの対処法
SUMIFSやピボットで形が作れても、実務では「数字が合わない」が必ず起きます。原因の多くは関数ミスではなく、データのクセ。ここでは頻出の落とし穴を、潰し方とセットでまとめます。
1)空白:見えない空白が条件一致を邪魔する
「部署=営業のはずなのに拾えてない」系は、末尾スペースや空白行が原因になりがちです。特にコピー貼り付けのデータは要注意。
- 対処:別列で
=TRIM(B2)(前後の余計な空白を除去)を作り、集計条件もその列を使う - 空白を条件にする:空欄の件数は
=COUNTIFS(担当列,"")、空欄以外は"<>"
2)文字列数値:「1000」が数値として計算されない
見た目は数字でも、左揃えの「1000」は文字列のことがあります。SUMIFSで合計が小さくなる/ピボットの集計がおかしい典型です。
- 対処:
=VALUE(D2)で数値化、または「データ」→「区切り位置」→何も変えず完了で一括変換 - 混在チェック:
=ISNUMBER(D2)で数値かどうかを判定して、FALSEが混ざっていないか確認
3)日付:日付に見える文字列/時間付きでズレる
ピボットの月グループ化ができない、期間条件(>=開始日、<=終了日)なのに漏れる…は日付が原因の可能性大です。
- 文字列日付:
=DATEVALUE(A2)で日付化(うまくいかない場合は区切り位置も有効) - 時間付き:終了日を「1/31」にしても、データが「1/31 18:00」だと
<=1/31に入らないことがあります。
対処:終了条件を"<"&終了日+1にする(翌日の0:00未満で切る)
4)重複:同じ取引が二重計上されている
集計結果がやたら大きいときは、元データ側の重複を疑うのが早いです。関数もピボットも、重複があればそのまま足し込みます。
- 対処:「データ」→「重複の削除」(削除前に必ずバックアップ)
- 見つける:条件付き書式→「重複する値」でID(伝票番号など)を可視化
- 実務のコツ:重複判定キー(例:日付+顧客+金額+伝票No)を列で持つと検出が安定
5)エラー:#N/Aや#DIV/0!が混ざると集計が崩れる
平均を出したら#DIV/0!、参照先が消えて#N/A…が混ざると、結果が見にくくなり意思決定が止まります。
- 表示だけ整える:
=IFERROR(式,"")で空欄にする(エラーの握りつぶし過ぎには注意) - 原因を潰す:「そもそもエラーが出ない形」に寄せる(0件なら平均を空欄にする等)
複数条件集計は「式を覚える」より、データの地雷を先に除去する方が再現性が上がります。数字が合わないときは、まずこの5つ(空白/文字列数値/日付/重複/エラー)を疑う。これだけで、原因特定までの時間が一気に短縮できます。
ベスト実践まとめ|ミスを減らして速く回す「集計設計」と運用ルール(テーブル化/命名/検証)
ここまでで関数(SUMIFSなど)とピボットの「作り方」は揃いました。実務で差がつくのは、作ったあとに壊れにくく、引き継げる形にしておくこと。集計は一発で当てるより、毎月・毎週の更新に耐える設計が勝ちです。ポイントは「テーブル化」「命名」「検証」の3つだけ押さえればOK。
1)元データはテーブル化して“範囲ズレ”を消す
まず最優先で、元データ範囲をテーブル(Ctrl+T)にします。テーブル化すると、行が増えても集計範囲が自動で追従し、ピボット更新も安定します。「A2:F500」みたいな固定参照は、データが増えた瞬間に漏れが出ます。
- テーブル名は
tblSalesなど用途が分かる名前に変更(テーブルデザイン→テーブル名) - 列名も「日付」「部署」「担当」「売上金額」のようにブレない表記に統一
SUMIFSもテーブル参照にしておくと読みやすくなります。
=SUMIFS(tblSales[売上金額],tblSales[部署],$B$2,tblSales[担当],$B$3,tblSales[日付],">="&$B$4,tblSales[日付],"<"&$B$5+1)
2)条件セル・結果セルは「入力→計算→表示」で分離する
1章の集計エリア設計を、運用ルールとして固定します。おすすめは、条件入力は黄色、結果はグレーなど見た目で役割を分けること。これだけで「どこを触っていいか」が明確になり、ミスが激減します。
- 入力セル:部署、担当、開始日、終了日(手入力 or リスト選択)
- 計算セル:SUMIFS/COUNTIFSなど(基本は触らない)
- 表示セル:報告用に整形した数値(円表示、桁区切り)
3)命名で「何の数字か」を式の外に出す
関数が長くなるほど事故が増えます。そこで、条件セルに名前の定義を付けるのが効きます(例:B2を部署、B4を開始日)。すると式が「読める日本語」に近づき、レビューもしやすい。
=SUMIFS(tblSales[売上金額],tblSales[部署],部署,tblSales[担当],担当,tblSales[日付],">="&開始日,tblSales[日付],"<"&終了日+1)
4)検証ルールを作って“数字が合ってるか”を仕組みにする
最後に、最重要の運用ルールが検証(チェック)です。複数条件集計は、合っているかを毎回「感覚」で見ると、そのうち事故ります。おすすめは次の二段構え。
- 総合計チェック:条件なしの合計(全売上)と、条件別の足し上げが一致するか確認
- 別手段チェック:同じ条件をピボットでも出して突合(関数 vs ピボット)
例えば「部署別の合計」があるなら、部署ごとの合計を足して全体合計と一致するかを見るだけで、条件漏れ・範囲ズレ・文字列数値混在(4章)を早期にあぶり出せます。
結局、強い集計は“関数力”より設計と運用で決まります。テーブル化で範囲ズレを消し、命名で読みやすくし、検証で数字の正しさを担保する。この3点セットを入れておけば、月次報告が「毎回作り直し」から「更新して出すだけ」に変わります。


コメント