条件付き集計関数の組み合わせ方としくみ|草野球成績管理表で月別×選手別クロス集計表を作る例で解説

関数の使い方

これまでSUMIFやSUMIFS、COUNTIFS、AVERAGEIFSといった、条件に一致する行だけを集計する関数を1つずつ見てきました。今回はそれらを実際の場面でどう組み合わせて使うか、「月別×選手別の安打数クロス集計表」を作る例で解説します。

複合条件集計とは

📝 複合条件集計の役割(一言でいうと)

SUMIFSやCOUNTIFSは複数条件を扱えますが、それ単体では「1つのセルの答え」しか出せません。行見出し(選手名)と列見出し(月)をそのまま条件として組み込み、同じ数式を表全体にコピーすることで、初めて「月別×選手別」のようなクロス集計表になります。今回は関数そのものの新しい仕組みではなく、既に覚えた関数を「表の形」に組み立てる考え方が主役です。

今回使う数式の基本形はこうです。

=SUMIFS(合計対象範囲, 条件範囲1, 条件1, 条件範囲2, 条件2)

成績管理表での実例:月別×選手別の安打数クロス集計表

大阪グーニーズの「成績データ」シートには、試合ごとの記録が1行1打席の形で入っているとします。A列に試合日、B列に選手名、C列に安打数、そしてD列に「その試合が何月か」を取り出した月の数値を入れておきます。

試合日 選手名 安打
4/6 SUZUKI 2 4
5/11 SUZUKI 1 5
5/18 NAKATA 3 5

このデータをもとに、別シート(または同シートの空いた場所)に、行=選手名、列=月のクロス集計表を作ります。

選手名 4月 5月 6月
SUZUKI 6 4 5
NAKATA 3 7 2

このとき、表の左上(SUZUKI×4月のセル)に入る数式はこうなります。

✅ 選手×月のクロス集計を求める式
=SUMIFS($C$2:$C$200, $B$2:$B$200, $A10, $D$2:$D$200, B$9)

「選手名が$A10(このセルの行)と一致し、かつ月がB$9(このセルの列見出し)と一致する行の安打だけを合計する」という式です。この1つのセルを表全体にコピーするだけで、すべてのマス目が自動で埋まります。

元データのどの行が拾われて「6」という数字になっているのか、下の図で確認してみましょう。

SUMIFSで選手名と月の2つの条件を指定し、SUZUKIの4月の安打だけを合計して6を求めるクロス集計の図解 クロス集計表の作り方 行見出しと列見出しをそのまま条件にして、1つの数式で表全体を埋める fx =SUMIFS($C$2:$C$200, $B$2:$B$200, $A10, $D$2:$D$200, B$9) 成績データシート(抜粋) A B C D 1 試合日 選手名 安打 2 4/6 SUZUKI 2 4 3 4/13 NAKATA 3 4 4 4/20 SUZUKI 3 4 5 4/27 SUZUKI 1 4 6 5/11 SUZUKI 1 5 7 5/18 NAKATA 3 5 条件範囲1 合計対象範囲 条件範囲2 クロス集計表のB10セル(SUZUKI × 4月) 6 SUZUKIかつ4月の行だけを合計 2 + 3 + 1 = 6 $A10 → SUZUKI / B$9 → 4(月) =SUMIFS(合計対象範囲, 条件範囲1, 条件1, 条件範囲2, 条件2) 行見出し($A10)と列見出し(B$9)を条件に指定すると、1つの数式のコピーだけでクロス集計表が完成します。 例:=SUMIFS($C$2:$C$200, $B$2:$B$200, $A10, $D$2:$D$200, B$9) → SUZUKIの4月の安打を合計して6 大阪グーニーズ データ解説
選手名と月の2条件に一致する行だけが合計され、クロス集計表の1マスになる
STEP 1
元データに「月」の列を追加する

成績データシートのD列に「=MONTH(A2)」と入力し、試合日から月だけを取り出しておきます。これが後で条件範囲になります。

STEP 2
クロス集計表の外枠を作る

別シートに、縦方向に選手名を、横方向に月(4,5,6…)を並べた表の枠だけを先に作ります。

STEP 3
左上のセルにSUMIFS数式を1つだけ入力する

表の一番左上(選手×月が交わる最初のセル)にだけ、上記の数式を入力します。まだこの段階ではコピーしません。

STEP 4
$を確認してから表全体にコピーする

数式内の$の位置を確認したら、そのセルをコピーし、表の残り全マスに貼り付けます。1つの数式が行・列に応じて自動的に条件を変えてくれます。

しくみを理解する:$(絶対参照)が表を成立させている

📝 行固定・列固定を使い分ける

クロス集計表が1つの数式のコピーだけで成立するのは、$の付け方を「行見出し」と「列見出し」で使い分けているからです。

  • $A10(列だけ固定):右方向にコピーしても常にA列(選手名)を見続け、下方向にコピーすると行番号がずれて次の選手を見る
  • B$9(行だけ固定):下方向にコピーしても常に9行目(月の見出し)を見続け、右方向にコピーすると列がずれて次の月を見る
  • $C$2:$C$200など集計対象・条件範囲そのものは、行も列も完全固定にして、コピーしてもズレないようにしておく

コピーするとどの参照がずれ、どの参照が動かないのかを、下の図で確かめておきましょう。

クロス集計表でB10の数式を右と下にコピーしたとき、$A10とB$9の参照がどうずれるかを示した図解 $の付け方とコピー方向 1つの数式が、コピー先の行と列に合わせて条件を変えていくしくみ fx =SUMIFS($C$2:$C$200, $B$2:$B$200, $A10, $D$2:$D$200, B$9) 赤枠=最初に入力するセル(B10)/青の破線=コピー先 A B C 9 選手名 4 5 10 SUZUKI 6 4 11 NAKATA 3 7 右へコピーすると B$9 → C$9 に変わり、5月の集計になる 範囲は完全固定にしておく $C$2:$C$200 のように行も列も固定すると、 どこにコピーしても範囲がずれません 下へコピーすると $A10 → $A11 に変わり、NAKATAの集計になる =SUMIFS($C$2:$C$200, $B$2:$B$200, $A10, $D$2:$D$200, B$9) 「$」は「コピーしてもずらさない」という印です。列名の前の$は列を、行番号の前の$は行を固定します。 例:B10の式を右にコピー → B$9がC$9に変わり、5月の集計になる 大阪グーニーズ データ解説
$の位置によって、コピー方向ごとにずれる参照と動かない参照が決まる

よくあるミス:表が崩れる原因

⚠️ 原因1:$の付け忘れでコピー先の条件がずれる

$を全く付けずに数式を作ってしまうと、コピーしたときに選手名の参照先や月の参照先までずれてしまい、表のマス目ごとに違う(間違った)条件で集計されてしまいます。数式を確定する前に、必ず$の位置を見直してください。

⚠️ 原因2:合計対象範囲と条件範囲の行数が違う

$C$2:$C$200(安打)に対して条件範囲を$B$2:$B$199(選手名)のように1行だけ短く指定してしまうと、範囲のサイズが一致せずエラーになります。複数条件を指定するときは、すべての範囲の行数を必ず揃えてください。

✅ この記事のまとめ
  • クロス集計表は、SUMIFS/COUNTIFSの条件に行見出し・列見出しをそのまま使うことで作れる
  • 左上の1マスだけ数式を作り、$の使い分け(行固定・列固定・完全固定)を正しく設定してから表全体にコピーするのが基本の作り方
  • 表が崩れるときは、$の付け忘れ範囲の行数不一致を疑う

次回予告

次回のテーマは「IF関数」です。ここまでの「集計」から一歩進んで、条件式の真偽によって処理を分岐させる仕組みを、打席結果の記号から「安打かどうか」を自動判定する例で解説していきます。

▶︎ 次回:IF関数の使い方としくみ

コメント

タイトルとURLをコピーしました