第1章:多条件分析の基本|「何を、どの条件で集計するか」を整理しよう
Excelで「多条件分析」がうまくいかない原因の多くは、関数の知識不足ではなく、集計の設計が曖昧なまま式を書き始めてしまうことです。たとえば「部署別の売上を出して」「今月分だけね」「担当者はAさん」と条件が重なるほど、頭の中だけで整理するのは限界がきます。だから最初にやるべきは、関数を探すことではなく、“何を、どの条件で”を紙に書くレベルまで分解すること。
まず、整理の軸はこの2つです。
- 集計したい値(目的変数):売上金額、工数、件数、平均単価など
- 条件(説明変数):期間、部署、担当、商品カテゴリ、ステータス…
次に、条件を「列」として扱える形に整えるのが超重要です。多条件分析は、基本的に「列=条件」「行=データ」の形で強くなります。逆に、セル結合や見出しの途中改行、1セルに「東京_営業部_田中」みたいに詰め込んだ状態だと、途端に集計が面倒になります。データはできるだけ次の形に寄せましょう。
| 日付 | 部署 | 担当 | 商品 | 売上 | ステータス |
|---|---|---|---|---|---|
| 2026/03/01 | 営業 | A | PC | 120000 | 確定 |
この形にできたら、条件の整理はさらにラクになります。おすすめは、条件を次の3種類に分けることです。
- 一致条件:部署=営業、担当=A(そのまま指定できる)
- 範囲条件:日付が今月、売上が10万以上(「以上/未満」が出る)
- 複合条件:営業 or マーケ、A and 確定 など(AND/ORが絡む)
ここまで整理できれば、「どの関数を使うか」も自然に決まってきます。たとえば、
- 合計したい → SUMIFS
- 件数を数えたい → COUNTIFS
- 平均を出したい → AVERAGEIFS
そして忘れがちなのが、条件の“入力場所”を作っておくこと。セルに条件を直書きしていると、あとから条件が増えた瞬間に式が崩れます。条件はシート上部にまとめて置き、参照するのが、現場で長持ちする作り方です。
例として、B2に部署、B3に担当、B4に開始日、B5に終了日…のように置けば、式は読みやすくなり、修正も一瞬です。次章では、この整理を前提に、現場で一番出番が多いSUMIFS/COUNTIFS/AVERAGEIFSの“鉄板コンボ”を、使い分けの視点でまとめていきます。
第2章:集計の鉄板コンボ|SUMIFS/COUNTIFS/AVERAGEIFSの使い分け
第1章で整理した「集計したい値(目的変数)」と「条件(説明変数)」が決まったら、次に迷うのがどのIFSを選ぶかです。結論はシンプルで、合計=SUMIFS/件数=COUNTIFS/平均=AVERAGEIFS。ただし現場では「何を集計したいのか」がブレて、遠回りの式になりがち。ここでは違いを最短で押さえます。
1) まずは役割で選ぶ(迷ったらこれ)
- SUMIFS:条件に合う「売上」「工数」など数値の合計
- COUNTIFS:条件に合うデータの件数(行数を数える)
- AVERAGEIFS:条件に合う数値の平均(単価や平均工数など)
ポイントは、COUNTIFSは「何かの列を数える」のではなく、条件に合う行を数える感覚。だから「売上が空白じゃない行だけ」など、数えたい対象を条件に組み込みます。
2) 基本構文は同じ。違うのは“集計対象”だけ
3つとも「条件範囲」と「条件」をペアで増やしていく作りです(複数条件は基本ANDで掛かります)。
SUMIFS(合計範囲, 条件範囲1, 条件1, 条件範囲2, 条件2, ...)
COUNTIFS(条件範囲1, 条件1, 条件範囲2, 条件2, ...)
AVERAGEIFS(平均範囲, 条件範囲1, 条件1, 条件範囲2, 条件2, ...)
第1章の例(列:日付/部署/担当/商品/売上/ステータス)を前提に、条件入力セルを用意しているとして、例えばこんな書き方になります。
3) SUMIFS:売上合計(期間×部署×担当×ステータス)
「今月」「営業」「担当A」「確定」の売上合計を出す例です(B2=部署、B3=担当、B4=開始日、B5=終了日、B6=ステータス)。
=SUMIFS($E:$E, $B:$B, $B$2, $C:$C, $B$3, $F:$F, $B$6, $A:$A, ">="&$B$4, $A:$A, "<="&$B$5)
- 日付の範囲条件は「>=開始日」「<=終了日」を同じ列に2回書く
- 条件を直書きせず、セル参照にしておくと後から条件変更が速い
4) COUNTIFS:件数カウント(“件数”の定義を先に決める)
「確定案件の件数」を数えたいなら、まず“案件1行=1件”の前提が必要です。あとはSUMIFSと同じ要領で条件を並べます。
=COUNTIFS($B:$B, $B$2, $F:$F, $B$6, $A:$A, ">="&$B$4, $A:$A, "<="&$B$5)
さらに実務で多いのが「売上が入っているものだけ数える」。この場合は条件に“<>”(空白ではない)を足します。
=COUNTIFS($B:$B,$B$2,$F:$F,$B$6,$E:$E,"<>")
5) AVERAGEIFS:平均(“平均したい列”を間違えない)
例えば「担当Aの平均売上(確定のみ)」のように、平均対象が明確なときに使います。
=AVERAGEIFS($E:$E, $C:$C, $B$3, $F:$F, $B$6)
注意点は、平均は空白や0の扱いで印象が変わること。空白が多い列を平均すると「思ったより低い/高い」が起きるので、必要なら「>0」などの条件を追加して定義を固めましょう。
6) 使い分けの結論:迷ったら“アウトプット”で決める
- 最終的に金額・時間を出したい → SUMIFS
- 最終的に件数・人数・回数を出したい → COUNTIFS
- 最終的に平均単価・平均工数を出したい → AVERAGEIFS
ここまでのIFS系は、条件が増えても「ペアを足すだけ」で強い一方、弱点もあります。たとえば「営業またはマーケ」などOR条件が入った瞬間に詰まりやすい。次章では、AND/ORを“式として組む”発想(IFS×論理式)で、条件が増えても崩れない作り方に進みます。
第3章:条件が増えても崩れない|AND/ORを“式で組む”テクニック(IFS×論理式)
SUMIFS/COUNTIFS/AVERAGEIFSは「条件をペアで足すだけ」で増やせる反面、基本はAND(全部満たす)です。つまり、OR(どれか満たす)が混ざった瞬間に一気にややこしくなります。
ここで発想を切り替えます。「IFSにORを無理やり入れる」ではなく、条件そのものを“論理式”として組んで、最後に合計/件数/平均に流し込む。これが崩れない作り方です。
1) まずは基本:論理式はTRUE/FALSE、掛け算/足し算で組める
Excelの中では、TRUE/FALSEは計算に使えます(TRUE=1、FALSE=0として扱える場面が多い)。これを利用して、条件を数字に変換します。
- ANDしたい → (条件1)*(条件2)(両方TRUEなら1)
- ORしたい → (条件1)+(条件2)(どちらかTRUEなら1以上)
例として、データがA列=日付、B列=部署、C列=担当、E列=売上、F列=ステータスだとします。
2) OR条件の王道:SUMIFSを足し算で分解する(条件が少ないなら最強)
「部署が営業またはマーケ」の売上合計のように、ORの候補が2〜3個で固定なら、SUMIFSを分解して足すのが速いです。
=SUMIFS($E:$E,$B:$B,"営業",$F:$F,$B$6)
+SUMIFS($E:$E,$B:$B,"マーケ",$F:$F,$B$6)
ただし候補が増えると式が長くなり、追加漏れが起きやすい。ここから先は「論理式で1本化」するのが安定です。
3) IFS×論理式(SUMPRODUCTで一発)|AND/ORが混ざっても崩れない
ORを含む条件は、SUMPRODUCTでまとめると強いです。たとえば、
- 部署:営業 または マーケ
- 担当:A
- ステータス:確定
この売上合計は、こんな1本で書けます。
=SUMPRODUCT(
(($B:$B="営業")+($B:$B="マーケ")>0) *
($C:$C=$B$3) *
($F:$F=$B$6) *
($E:$E)
)
- (部署=営業)+(部署=マーケ)でORを作り、>0で「どちらか満たす」を1/0に変換
- 担当、ステータスは掛け算でAND
- 最後に売上列($E:$E)を掛けて合計
同じ考え方で、件数を出したいなら「売上列」の代わりに1を掛けます(条件を満たす行だけ1が残る)。
=SUMPRODUCT(
(($B:$B="営業")+($B:$B="マーケ")>0) *
($C:$C=$B$3) *
($F:$F=$B$6) *
1
)
4) 条件が増えたときのコツ:式を“ブロック化”して読む
論理式は、見た目がごちゃつくと途端に事故ります。コツは条件を「部署ブロック」「期間ブロック」みたいに塊で分けて作ること。期間条件も同じで、例えば「開始日〜終了日」はANDなので掛け算でOKです。
=SUMPRODUCT(
(($B:$B="営業")+($B:$B="マーケ")>0) *
($A:$A>=$B$4) * ($A:$A<=$B$5) *
($F:$F=$B$6) *
($E:$E)
)
ここまで来ると、条件が増えても「ブロックを1つ足す」だけ。IFSのように「同じ列を何回も指定して…」と迷子になりにくいのがメリットです。
次章では、集計だけでなく「該当データをそのまま抽出したい」「一覧を自動で作りたい」場面に進みます。XLOOKUP/FILTER/UNIQUEを使うと、多条件の検索・抽出が一気に爆速化します。
第4章:検索・抽出を爆速化|XLOOKUP/FILTER/UNIQUEで多条件に強くなる
ここまでの1〜3章は「合計・件数・平均」など集計が中心でした。でも現場で多いのは、集計値だけじゃなく“該当行そのものを見たい/一覧で欲しい”ケースです。たとえば「確定の案件一覧を出して、そのまま上司に貼る」「担当Aの今月分だけ別シートに自動で抜く」みたいなやつ。ここで効くのがXLOOKUP/FILTER/UNIQUEのコンボです。
1) XLOOKUP:多条件は“キーを作って”一発検索
XLOOKUPは基本1条件検索ですが、列をつなげて疑似的に多条件にできます。ポイントは「部署&担当&日付」などを結合した検索キーを作ること。
=XLOOKUP(
$B$2&"|"&$B$3,
$B:$B&"|"&$C:$C,
$E:$E,
"該当なし"
)
- B2=部署、B3=担当、戻り値=売上(E列)の例
- 区切り記号「|」を入れると、結合の事故(例:A1+B11問題)が起きにくい
注意点として、XLOOKUPは最初に見つかった1件しか返しません。「一覧で欲しい」なら次のFILTERに回すのが正解です。
2) FILTER:条件に合う行を“そのまま抽出”できる最強関数
FILTERは「条件に合う行だけ」を丸ごと返せます。IFSで頑張って集計するより、まずFILTERで絞り込み結果を作ってから別の処理(集計/確認)につなげると早いです。
例:今月(B4〜B5)×部署(B2)×ステータス(B6)が一致する行を抽出。
=FILTER(
A:F,
(B:B=$B$2) * (F:F=$B$6) * (A:A>=$B$4) * (A:A<=$B$5),
"該当なし"
)
- 条件は第3章と同じ発想で、ANDは掛け算で1本化
- 抽出結果はスピル(自動で下に展開)するので、貼り付け作業が消える
さらに「営業 or マーケ」などOR条件も簡単です。
=FILTER(
A:F,
((B:B="営業")+(B:B="マーケ")>0) * (F:F=$B$6),
"該当なし"
)
3) UNIQUE:“候補リスト”を自動生成して入力ミスを減らす
地味に効くのがUNIQUEです。多条件分析で事故る原因の1つが、条件セル(部署名や担当名)の手入力ミス。UNIQUEで候補リストを自動生成して、プルダウンにすればミスが激減します。
=SORT(UNIQUE(B:B))
部署一覧を自動生成→データの入力規則(リスト)に指定、という流れが鉄板。担当ならC列、ステータスならF列という具合に横展開できます。
4) 使い分けの結論:集計より「まず抽出」で考えると速い
- 1件だけ取りたい(キーで特定できる)→ XLOOKUP
- 一覧が欲しい(条件で絞りたい)→ FILTER
- 条件の候補を作りたい(入力を安定させたい)→ UNIQUE(+SORT)
次章では、ここまでの考え方を「売上・工数・在庫」などの現場テンプレに落とし込みます。式を都度考えるのではなく、パターンで持っておくと明日からの作業が一気に軽くなります。
第5章:現場で使える実例集|売上・工数・在庫を「複数条件×自動化」するテンプレ思考
ここからは「関数を覚える」より強い、テンプレで考えるパートです。現場の多条件分析は、だいたい①条件セルを置く → ②抽出(FILTER)で“対象データ”を作る → ③集計(SUMIFS/COUNTIFS/AVERAGEIFS or SUMPRODUCT)で数字を出すの3段構えにすると崩れません。式を毎回ひねるのではなく、型を持っておくと速いです。
テンプレ共通の前提(条件セル)
- B2:部署(UNIQUEでプルダウン化推奨)
- B3:担当
- B4:開始日 B5:終了日
- B6:ステータス
実例1:売上|「今月×部署×確定」の一覧→合計まで自動
まずは一覧を自動生成して、確認できる状態にします(第4章の発想)。
=FILTER(
A:F,
(B:B=$B$2) * (F:F=$B$6) * (A:A>=$B$4) * (A:A<=$B$5),
"該当なし"
)
次に、合計はシンプルにSUMIFSでOK。「一覧」と「数字」が同じ条件になっていると、説明コストが激減します。
=SUMIFS($E:$E,$B:$B,$B$2,$F:$F,$B$6,$A:$A,">="&$B$4,$A:$A,"<="&$B$5)
実例2:工数|「案件別に、担当Aの今週工数」=抽出+ピボット風
工数は「合計」だけ見ても納得されにくいので、案件(タスク)単位の内訳が欲しくなります。まず担当×期間で抜きます(例:A列=日付、C列=担当、D列=案件、G列=工数)。
=FILTER(
A:G,
(C:C=$B$3) * (A:A>=$B$4) * (A:A<=$B$5),
"該当なし"
)
内訳集計は「案件リスト」をUNIQUEで作り、横にSUMIFSを置くのが最短です。
=SORT(UNIQUE(D:D))
=SUMIFS($G:$G,$D:$D,案件セル,$C:$C,$B$3,$A:$A,">="&$B$4,$A:$A,"<="&$B$5)
これで“ピボットを組むほどでもない集計”が、更新作業ゼロで回ります。
実例3:在庫|「拠点×カテゴリ×在庫あり」から発注候補を自動抽出
在庫は「数字」より発注すべき行の抽出が価値になります(例:B列=拠点、C列=カテゴリ、E列=在庫、F列=発注点)。
=FILTER(
A:F,
(B:B=$B$2) * (C:C=$B$7) * (E:E<=F:F) * (E:E>0),
"該当なし"
)
ポイントは、条件に“在庫>0”のような業務ルールを入れておくこと。これを入れないと「欠品(0)も同列に出てしまう」など、現場の判断がブレます。
テンプレ思考の結論:まず「一覧」、次に「数字」
- 上司に説明しやすい:数字の根拠(該当行)が同じシートにある
- 条件追加に強い:FILTERの条件ブロックを1つ足すだけ
- 修正が速い:条件はセル、式は固定で使い回せる
この型を「売上・工数・在庫」に横展開できれば、多条件分析は“関数力”ではなく設計力で勝てます。


コメント