スプレッドシートのMONTH関数の使い方|月別集計・四半期判定を自動化する完全ガイド

スポンサーリンク

「この売上データ、月ごとに集計してほしいんだけど」。こんな依頼、急に飛んでくると地味に焦りますよね。日付から月だけを取り出す作業を手作業でやると、コピペミスや並び替えミスが必ず混ざります。件数が増えれば増えるほど、リスクは高くなります。

スプレッドシートのMONTH関数を使えば、ここは一発で解決できます。日付から月の数字を自動で取り出せるので、月別集計や四半期判定、今月データの自動抽出まで応用がききます。この記事では、MONTH関数の基本から、SUMIFS・ARRAYFORMULA・EOMONTHとの組み合わせまで、実務でそのまま使えるパターンをまるごと紹介していきます。

スプレッドシートのMONTH関数とは?基本構文と戻り値

MONTH関数は、日付データから「月」だけを取り出す関数です。読み方はそのまま「マンス」。戻り値は1〜12の整数で返ってきます。たとえば7月20日なら 7 が返ります。

=MONTH(日付) の引数

=MONTH(日付)

引数はひとつだけ。とてもシンプルです。

引数必須/任意説明
日付必須月を取り出したい日付。セル参照、DATE関数の結果、シリアル値が使える

文字列で渡すと #VALUE! エラーになるので、必ず日付値で渡してください。ここはあとで詳しく触れます。

日付セルから月を取り出す基本例

セルA2に 2026/07/20 と入っている場合を見てみましょう。

=MONTH(A2)

結果は 7 です。

DATE関数の使い方と組み合わせることもできます。

=MONTH(DATE(2026,12,25))

結果は 12 。DATE関数(年・月・日から日付を作る関数)で作った日付でも問題なく使えます。

シリアル値を直接渡しても動きます。

=MONTH(46022)   → 12(2026/12/25)

ただし、シリアル値を覚える必要はありません。実務ではセル参照かDATE関数で十分ですよ。

月別集計をSUMIF+MONTHで自動化する

実務で最もよく使うのが、月別の合計を出すパターンです。MONTH関数で補助列を作る方法が一番わかりやすいので、そこから紹介します。

補助列にMONTHで月番号を抽出する

まず、日付が入ったA列の横に補助列を作ります。

 A列(日付)B列(売上)C列(月)
2行目2026/01/1530,0001
3行目2026/01/2845,0001
4行目2026/02/1020,0002
5行目2026/03/0555,0003
6行目2026/01/2010,0001

C2に入れる数式はこれだけです。

=MONTH(A2)

あとはC6までコピーすればOKです。

SUMIFで月ごとに合計する

補助列ができたら、SUMIF関数(条件に合うセルを合計する関数)で月ごとに集計できます。

=SUMIF(C2:C6, 1, B2:B6)

1月の売上合計は 85,000 です。30,000 + 45,000 + 10,000 ですね。手動で計算しても一致します。

月の数字を変えるだけで、2月なら 20,000、3月なら 55,000 と出せます。データが増えても数式を変える必要がないのが便利です。

実務では、別の表に「1月・2月・3月…」と縦に並べておいて、SUMIFの条件部分にセル参照を入れるのが定番パターンです。

=SUMIF($C$2:$C$100, E2, $B$2:$B$100)

E2に「1」、E3に「2」と入れておけば、コピーするだけで12ヶ月分の集計表ができあがります。

SUMIFSで「月+カテゴリ」の複合集計

「商品カテゴリ別×月別」のような複合集計には、SUMIFS関数(複数条件で合計する関数)が便利です。

D列に「カテゴリ」を追加した表を想定します。

 A列(日付)B列(売上)C列(月)D列(カテゴリ)
2行目2026/01/1530,0001文具
3行目2026/01/2845,0001雑貨
4行目2026/02/1020,0002文具

「1月の文具の売上」を求める数式はこうです。

=SUMIFS(B2:B100, C2:C100, 1, D2:D100, "文具")

結果は 30,000 。SUMIF(条件1つ)と違い、SUMIFSは合計範囲が先頭、条件は後ろにペアで並びます。書き順が違うので、ここは混同しやすいポイントですよ。

今月のデータだけを抽出する(MONTH+TODAY)

「今月分だけ見たい」という場面も多いですよね。MONTH関数とTODAY関数の使い方を組み合わせれば、自動で今月を判定できます。

MONTH(TODAY())で今月番号を取得

=MONTH(TODAY())

TODAY関数(今日の日付を返す関数)は再計算時に更新されます。なので、この数式は常に現在の月番号を返してくれます。2026年5月なら 5 です。

IFと組み合わせた条件抽出

「今月のデータなら売上を表示、それ以外は空白」という条件分岐もできます。

=IF(MONTH(A2)=MONTH(TODAY()), B2, "")

ただし、これだと「年」をチェックしていないので、去年の同じ月も拾ってしまいます。実務では年も合わせてチェックするのが安全です。

=IF(AND(MONTH(A2)=MONTH(TODAY()), YEAR(A2)=YEAR(TODAY())), B2, "")

自動更新される今月集計の作り方

SUMIFと組み合わせると、月が変わるたびに集計対象が自動で切り替わる仕組みが作れます。

=SUMIF(C2:C100, MONTH(TODAY()), B2:B100)

C列が補助列(MONTH関数で月番号を入れた列)です。ただし複数年データを扱う場合は、SUMIFSで年もチェックしてください。

=SUMIFS(B2:B100, C2:C100, MONTH(TODAY()), F2:F100, YEAR(TODAY()))

F列に =YEAR(A2) で年の補助列を作っておくのがコツです。月が変わると自動で集計対象が切り替わるので、月初にダッシュボードを開くだけで最新数字が見られます。

四半期を自動判定する2つの方式

月番号がわかれば、四半期の判定も簡単です。MONTH関数の結果を少し加工するだけで実現できます。

ROUNDUP(MONTH()/3,0) で暦年Q1〜Q4

=ROUNDUP(MONTH(A2)/3, 0)

ROUNDUP関数(切り上げを行う関数)で、月を3で割って切り上げます。仕組みはこうです。

  • 1〜3月: 1/3〜3/3 → 切り上げで 1(Q1)
  • 4〜6月: 4/3〜6/3 → 切り上げで 2(Q2)
  • 7〜9月: 7/3〜9/3 → 切り上げで 3(Q3)
  • 10〜12月: 10/3〜12/3 → 切り上げで 4(Q4)

「Q1」のように表示したい場合は、文字列連結で対応できます。

="Q" & ROUNDUP(MONTH(A2)/3, 0)

7月なら Q3 と表示されます。

4月始まりの会計年度に対応する数式

日本企業に多い4月始まりの会計年度には、こちらの数式が対応します。

=INT(MOD(MONTH(A2)-4, 12)/3) + 1

ちょっとむずかしく見えますが、やっていることはシンプルです。MOD関数(余りを求める関数)で4月を起点にずらし、3で割って四半期番号にしています。

  • 4〜6月 → Q1
  • 7〜9月 → Q2
  • 10〜12月 → Q3
  • 1〜3月 → Q4

経理部門で決算資料を作るときに、ここはよく使うパターンです。社内の会計年度に合わせて使い分けてみてください。

ARRAYFORMULAで補助列を使わずに集計する

補助列を作るのが面倒、というケースもありますよね。ARRAYFORMULA(配列処理を一括で行う関数)を使えば、補助列なしで月番号を一気に処理できます。

補助列を1セルで生成する

C2に次の数式を入れます。

=ARRAYFORMULA(IF(A2:A="","",MONTH(A2:A)))

これだけで、A列のデータがある行すべてに月番号が自動で入ります。データを追加しても、数式のコピーが不要なのが大きなメリットです。

SUMPRODUCTで補助列なし集計

補助列そのものをなくしたい場合は、SUMPRODUCT関数(配列同士の積和を求める関数)と組み合わせます。

=SUMPRODUCT((MONTH(A2:A100)=1)*(B2:B100))

これで「1月の売上合計」が一発で出せます。MONTH関数を配列にそのまま渡せるのがSUMPRODUCTの強みです。SUMIFSより少し重くなりますが、データ件数が数千件レベルまでなら体感差はほぼありません。

ただしARRAYFORMULAで作った列の真下にデータを手入力すると #REF! エラーになるので、ARRAYFORMULA列は他のデータと混ぜないようにしてくださいね。

DATE関数・EOMONTH関数で月初・月末を求める

MONTH関数は、DATE関数の使い方と組み合わせると月初・月末の日付も求められます。

月初日を求める数式

=DATE(YEAR(A2), MONTH(A2), 1)

YEAR関数の使い方で年を、MONTH関数で月を取り出します。日を 1 に固定すれば月初日の完成です。

A2が 2026/07/20 なら、結果は 2026/07/01 になります。

月末日を求める2つの方法

月末日の求め方は2つあります。

=DATE(YEAR(A2), MONTH(A2)+1, 0)

この数式は「翌月の0日」を指定しています。0日目は前月の最終日になるんです。なので、7月の翌月8月の0日は 2026/07/31 です。

もっとシンプルに書くなら、EOMONTH関数(月末日を返す関数)が便利です。

=EOMONTH(A2, 0)

結果は同じ 2026/07/31 です。第2引数の数字を変えると、翌月末や先月末も求められます。

=EOMONTH(A2, 1)    → 翌月末
=EOMONTH(A2, -1)   → 先月末

請求書の支払期限計算(請求月の翌月末払いなど)にもよく使うので、EOMONTHはセットで覚えておくと便利ですよ。

YEAR・MONTH・DAYの違いと使い分け

日付から特定の要素を取り出す関数は、3つセットで覚えると便利です。

関数戻り値範囲例(2026/07/20)
YEAR関数1900〜99992026
MONTH1〜127
DAY1〜3120

3つとも構文は同じ形式です。DAY関数(日を返す関数)も同様で、引数に日付を渡すだけ。使い方に迷うことはないですよね。

=YEAR(A2)   → 2026
=MONTH(A2)  → 7
=DAY(A2)    → 20

どの関数も、セル参照やDATE関数の結果を渡して使います。数式内に 7/20/2026 のように直接書くと、割り算として計算されてしまうので注意してください。

よくあるエラーと対処法

MONTH関数で出やすいエラーは2つです。

エラー原因対処法
#VALUE!日付として認識できない文字列を渡したセル参照またはDATE関数を使う。文字列ならDATEVALUEで変換
#NUM!シリアル値が大きすぎる/負の値入力値を確認する

よくあるのは #VALUE! エラーです。たとえば、次の数式はエラーになります。

=MONTH("2026年7月20日")

日本語の日付文字列は認識できません。この場合はDATE関数で書き直してください。

=MONTH(DATE(2026,7,20))

CSVから読み込んだデータで日付が文字列扱いになっている場合は、DATEVALUE関数(文字列を日付値に変換する関数)を挟むと解決します。

=MONTH(DATEVALUE(A2))

もうひとつ注意したいのが、数式内での日付の直接入力です。

=MONTH(7/20/2026)

これは 7÷20÷2026 という割り算になってしまいます。必ずセル参照かDATE関数を使ってみてください。

ピボットテーブルとMONTH関数の使い分け

「ピボットテーブルを使えば、MONTH関数いらないのでは?」と思った方もいるかもしれません。実は両方とも使い所が違います。

用途おすすめ
探索的に色々な切り口で見たいピボットテーブル
帳票として固定化・自動更新したいMONTH関数+SUMIF/SUMIFS
ダッシュボードで他関数と組み合わせたいMONTH関数
データ件数が万件超で集計が重いピボットテーブル

ピボットは強力ですが、レイアウトを固定したり、別シートの数値と連動させたりするのは苦手です。一方MONTH関数は、自分で作った集計表に好きなようにレイアウトを組めます。

両方使えるようになると、用途に応じて選べるのでぐっと作業がはかどりますよ。

まとめ

MONTH関数は、日付から月を取り出すシンプルな関数です。構文は =MONTH(日付) のひとつだけ。でも組み合わせ次第で、月別集計から四半期判定、月初月末の算出まで幅広く使えます。

この記事で紹介した活用パターンをおさらいしましょう。

  • 月別集計: 補助列にMONTH関数 → SUMIF/SUMIFSで合計
  • 複合集計: SUMIFSで「月+カテゴリ」など複数条件
  • 今月データの抽出: MONTH(TODAY())で自動判定。年もセットでチェック
  • 四半期判定: 暦年は ROUNDUP(MONTH()/3,0)、4月始まりは MOD式
  • 補助列なし: ARRAYFORMULAやSUMPRODUCTで一括処理
  • 月初・月末: DATE関数やEOMONTH関数と組み合わせ

まずは補助列を使った月別集計から試してみてください。一度作れば、毎月の集計作業がグッと楽になりますよ。

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