売上や経費の一覧から「10月分だけ」「この担当者だけ」の合計を出したい、という場面はよくあります。フィルターで絞って足し算をしてもよいのですが、毎月やるなら SUMIFS を1つ置いておくと楽です。
今日は、月で区切って合計する書き方と、つまずきやすい2つの点をまとめます。
例として、次のような表を使います。
(A列(日付) / B列(担当) / C列(金額))
・2026/09/28 田中 3,000
・2026/10/01 佐藤 5,000
・2026/10/01 田中 2,000
・2026/10/15 田中 4,000
・2026/10/31 佐藤 1,500
・2026/11/01 田中 6,000
・2026/10/20 田中 1,000
E2 に集計したい月の1日(2026/10/01)、F2 に担当者の名前(田中)を入れておきます。
■ 基本の形
=SUMIFS($C$2:$C$8,$B$2:$B$8,F2,$A$2:$A$8,">="&E2,$A$2:$A$8,"<"&EDATE(E2,1))
読み方は「C列を合計する。ただし B列が F2 と同じで、A列が E2 以降、かつ E2 の1か月後より前の行だけ」です。
この表では 2,000+4,000+1,000 で 7,000 になります。9/28 と 11/01 の行はちゃんと外れます。F2 を「佐藤」に変えると、10/31 の行も入って 6,500 になりました。
SUMIF(Sが無い方)と違い、SUMIFS は合計する列を最初に書きます。SUMIF から書きかえるときに順番を取り違えやすいので気をつけてください。
■ つまずき1:「">=E2"」と書くと0になる
日付の条件を、次のように引用符の中にセル番地ごと書いてしまうことがあります。
=SUMIFS($C$2:$C$8,$B$2:$B$8,F2,$A$2:$A$8,">=E2",$A$2:$A$8,"<"&EDATE(E2,1))
これだと「E2 という文字以上」という意味になり、結果は 0 でした。エラーにならないので気づきにくいのが困るところです。
比べる記号だけを引用符に入れ、セルとは & でつなぐ、と覚えておくと間違えません(">="&E2)。
■ つまずき2:月末を「<=EOMONTH」で区切ると、時刻つきの行が漏れる
月末の区切りは、次のように EOMONTH(その月の末日)で書く方法もよく紹介されます。
=SUMIFS($C$2:$C$8,$B$2:$B$8,F2,$A$2:$A$8,">="&E2,$A$2:$A$8,"<="&EOMONTH(E2,0))
日付だけの表なら、上の基本の形と同じ 7,000 になります。
ところが、フォームの回答やシステムから書き出した表のように日付に時刻が付いていると話が変わります。試しに「2026/10/31 15:00・田中・800」の行を足したところ、
- "<="&EOMONTH(E2,0) の式 → 7,000(10/31 15:00 の行が入らない)
- "<"&EDATE(E2,1) の式 → 7,800(ちゃんと入る)
となりました。EOMONTH は「10/31 の0時ちょうど」を指すので、それより後の時刻が外れてしまうためです。
「翌月1日より前」で区切る書き方なら、時刻があってもなくても同じように数えられるので、こちらをおすすめします。
■ まとめ
- 合計する列が先頭。条件は「範囲, 条件」の組で足していく
- 記号だけ引用符に入れ、セルは & でつなぐ(">="&E2)
- 月の終わりは "<"&EDATE(E2,1)(翌月1日より前)で区切ると、時刻つきでも漏れない
上の式は、手元で見本の表を作り、計算ツール(Excel 形式で計算するもの)で結果を確かめています。Google スプレッドシートでも同じ関数がありますが、そちらの画面では確かめていません。
――――
「うちの表だと、どこに何を書けばいいか分からない」という方向けに、スプレッドシートの関数や GAS を1つお作りするサービスを出しています。動かして確かめてからお渡しします。
※この記事は生成AI(Claude)を使って書き、式は手元で計算して確かめました。