Excel関数 逆引き集 | 月次集計 → SUMIFS

Excel
スポンサーリンク

概要

「月次集計」は、日別や明細レベルのデータから、「月ごとの合計」を取り出す作業です。
Excel では、条件付き合計の SUMIFS 関数を使うことで、「この月の分だけを合計する」という処理を、数式だけでスマートに書けます。

ここでは、
「日付の入った明細表」から「月別の売上集計表」を作る、という典型パターンを題材に、
SUMIFS を使った月次集計の考え方とコード例を、初心者向けにかみ砕いて説明します。


SUMIFS の基本

SUMIFS の書式

SUMIFS は「複数条件で合計する」関数です。

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

意味としては、

  • 「合計範囲」の中から
  • 「条件範囲1 が 条件1 を満たし」
  • かつ「条件範囲2 が 条件2 を満たし」…
  • ものだけを合計する

という動きになります。

月次集計では、
「日付がこの月の範囲に入っている行だけを合計する」
という条件を SUMIFS で表現します。


日付を使った月次集計の基本パターン

データの前提

よくある形はこんな表です。

  • A 列:日付(例:2025/1/1, 2025/1/2, …)
  • B 列:売上金額

別シート、または同じシートの別の場所に、月別集計表を作ります。

  • D 列:月(例:2025/1/1, 2025/2/1 のように「その月の1日」を代表として入力)
  • E 列:その月の売上合計(ここを SUMIFS で計算)

「その月の1日」と「翌月の1日」を使う考え方

日付で月を判定するときの定番は、

  • 「その月の1日以上」かつ「翌月の1日未満」

という条件で絞り込む方法です。

たとえば、D2 に「2025/1/1」が入っているとき、
「2025年1月分の売上」は、

  • 日付が 2025/1/1 以上
  • 日付が 2025/2/1 未満

の行だけを合計すればよい、という考え方になります。


コード例:SUMIFS で月次集計

1 月の売上合計を求める式

前提:

  • 明細表
    • A 列:日付
    • B 列:売上
  • 集計表
    • D2:2025/1/1(1 月の代表日)
    • E2:1 月の売上合計を出したいセル

このとき、E2 には次のように書けます。

=SUMIFS($B:$B, $A:$A, ">="&$D2, $A:$A, "<"&EDATE($D2,1))

意味を分解すると、

  • 合計範囲:$B:$B(売上金額)
  • 条件1:$A:$A >= D2(日付がその月の1日以上)
  • 条件2:$A:$A < EDATE(D2,1)(日付が翌月の1日より前)

EDATE(D2,1) は「D2 の1ヶ月後(翌月の同日)」を返す関数です。
これで、「D2 の月に属する日付だけを合計する」式になります。

月ごとにコピーして使う

D3 に 2025/2/1、D4 に 2025/3/1…と「各月の1日」を入れておけば、
E2 の式を下にコピーするだけで、2 月・3 月…の月次集計も自動で計算されます。

D 列の「月」を変えるだけで、SUMIFS の条件も自動で変わる、という設計です。


「年」と「月」を分けて管理するパターン

年と月を別セルに持つ場合

「年」と「月」を別々の列に持っている場合もあります。

  • A 列:日付
  • B 列:売上
  • D 列:年(例:2025)
  • E 列:月(例:1, 2, 3 …)
  • F 列:その年・月の売上合計

この場合は、日付から「年」と「月」を取り出して条件に使う方法があります。

YEAR・MONTH 関数と組み合わせる

F2 に、次のように書きます。

=SUMIFS($B:$B, YEAR($A:$A), $D2, MONTH($A:$A), $E2)

…と書きたいところですが、SUMIFS の条件範囲には「関数を直接配列的に書く」ことができません。
そのため、この形はそのままでは使えません。

現実的には、

  • 明細表の別列に「年」列、「月」列を作っておく
  • その列を条件範囲として SUMIFS を使う

という設計にするのが扱いやすいです。

年列・月列を追加した設計

たとえば、明細表に次の列を追加します。

  • C 列:年(=YEAR(A2) を下にコピー)
  • D 列:月(=MONTH(A2) を下にコピー)

集計表側では、

  • G 列:年
  • H 列:月
  • I 列:月次売上合計

として、I2 にこう書きます。

=SUMIFS($B:$B, $C:$C, $G2, $D:$D, $H2)

これで、「年=G2 かつ 月=H2 の行の売上だけを合計する」月次集計ができます。


月次集計の設計のコツ

「日付の範囲」で考えるか、「年・月の列」で考えるか

月次集計の設計は、大きく 2 パターンあります。

  1. 日付の範囲(>=その月の1日、<翌月の1日)で絞る
  2. 年列・月列を作って、その値で絞る

どちらも正解ですが、

  • 日付の範囲:列が増えずシンプル、EDATE を使う
  • 年・月列:条件が直感的で、ピボットテーブル的な集計にも応用しやすい

という特徴があります。
シートの構造や、あとからの拡張性を考えて、どちらかに統一しておくと迷いません。


例題

問題1

A 列に日付、B 列に売上が入っている明細表があります。
別の場所に、D2 に「2025/1/1」、E2 に「2025年1月の売上合計」を出したいとします。

SUMIFSEDATE を使って、E2 に書くべき式を完成させてください。
(ヒント:日付が「D2 以上」かつ「EDATE(D2,1) 未満」の行を合計します)

問題2

前問の E2 の式を、E3・E4 にコピーして「2 月」「3 月」の月次集計を出したいとします。
D3 に「2025/2/1」、D4 に「2025/3/1」が入っているとき、
E2 の式をそのままコピーするだけで正しく動く理由を、自分の言葉で説明してください。

問題3

明細表に、A 列:日付、B 列:売上、C 列:年、D 列:月 という列を用意しました。
C 列には =YEAR(A2)、D 列には =MONTH(A2) を入れて下にコピーしてあります。

集計表側で、G 列に年、H 列に月を入力し、I 列に「その年・月の売上合計」を出したいとき、
I2 に書くべき SUMIFS の式を答えてください。

問題4

次の 2 つの月次集計の書き方があります。

  1. 日付の範囲で絞る:
    =SUMIFS($B:$B, $A:$A, ">="&D2, $A:$A, "<"&EDATE(D2,1))
  2. 年・月列で絞る:
    =SUMIFS($B:$B, $C:$C, $G2, $D:$D, $H2)

それぞれのメリット・デメリットを、「列の数」「式の読みやすさ」「あとからの拡張性」という観点から整理して説明してください。

問題5

月次集計をするとき、「日付のセルの表示形式だけを“yyyy/mm”にして、見た目の月で集計しようとする」と、どのような問題が起こるでしょうか。
「表示形式」と「実際の値(シリアル値)」の違いを踏まえて、なぜ SUMIFS の条件には“見た目の表示”ではなく“実際の値や列”を使うべきなのか、自分の言葉で説明してみてください。

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