テクノロジーガイド

Google SheetsでEOMONTH関数を使いこなす方法

2 min read スプレッドシート 更新されました 21 Oct 2025
Google SheetsでEOMONTH関数を使いこなす方法
Google SheetsでEOMONTH関数を使いこなす方法

EOMONTHとは何か、いつ使うべきか

EOMONTHはGoogle Sheetsの組み込みの日時関数群に属する関数で、ある開始日から指定した数の月だけ進めた(あるいは戻した)先の月の最終日を返します。会計や請求処理、サブスクリプションの有効期限、契約終了日など、月末基準の日付が必要な場面で頻繁に使われます。

1行定義: EOMONTHは「開始日からnか月移動した月の最後の日」を返す関数です。

重要ポイント:

  • months に正の整数を渡すと、開始日から将来の月末を返します。負の整数を渡すと過去の月末を返します。
  • months に小数を渡すと小数部分は切り捨てられます(例: 5.7 → 5)。
  • 日付の入力はセル参照、DATE関数、または日付文字列(シートの地域設定に依存)で指定できます。
  • EOMONTHはうるう年も正しく考慮します。

重要: 日付がテキストとして格納されている場合は DATEVALUE() や DATE() を使って正しい日付シリアルに変換してください。

構文

=EOMONTH(start_date, months)
  • start_date: 必須。基準となる日付。セル参照(例: A2)、DATE() や TODAY() で渡せます。
  • months: 必須。開始日から何か月移動するかを表す整数。正は未来、負は過去。

基本的な使い方(ステップバイステップ)

以下はシートに開始日(A列)と移動月数(B列)がある例です。日付表示は dd/mm/yyyy 形式を例として示します。

  1. 結果表示用のセル(例: C2)を選択します。
  2. 次の式を入力します:
=EOMONTH(A2, B2)
  1. Enterを押すと、C2にA2の開始日からB2か月移動した先の月末日が表示されます。

例:

A(開始日)B(移動月数)C(結果)
12/03/2022031/03/2022
12/03/2022130/04/2022
25/02/2020029/02/2020
15/07/2023-130/06/2023

上の表では、うるう年(2020年2月)に対して正しく29日が返っていることに注目してください。

カレンダー上に浮かぶGoogle Sheetsのロゴ

実践的な例とテンプレート

  1. 請求書の支払期限を「月末」に設定する(当月末):
=EOMONTH(TODAY(), 0)
  1. 発行日から3か月後の月末を自動計算する:
=EOMONTH(IssueDateCell, 3)
  1. サブスクリプションの次回請求日(毎月末)を作る(前回請求日が A2 にある場合):
=EOMONTH(A2, 1)
  1. 月末から逆算して「締め日が営業日である」ように調整する(NETWORKDAYS や WORKDAY を併用):
=WORKDAY(EOMONTH(A2,0), -1, HolidaysRange)

この例は、月末から逆算して最も近い前の営業日を求めるパターンです。

単純なEOMONTHの例.jpg?q=50&fit=crop&w=825&dpr=1.5)

EOMONTHの代替手段と比較

  • DATE関数トリック(互換性と理解のため):
=DATE(YEAR(A2), MONTH(A2)+1, 0)

この式は『次月の1日の0日目』つまり『当月の最終日』を返す古典的な方法です。EOMONTHと同じ結果を得られますが、可読性はEOMONTHの方が高いです。

  • EDATE関数との違い:

EDATE(start_date, months) は指定月の「同日」を返します(例: 2022-01-31 +1か月 → 2022-02-28/29 の挙動はシート実装による)。EOMONTHは常に月末を返す点で用途が異なります。

使い分けのヒント: 月末が必要ならEOMONTH、単に月をまたいだ「同日」が必要ならEDATE。

よくある誤りと落とし穴(エッジケース)

  • 日付が文字列になっている: “2022/03/12” がテキストだと意図した結果にならないことがあります。DATEVALUE()で変換してください。
=EOMONTH(DATEVALUE("12/03/2022"), 0)
  • monthsに小数を渡すと切り捨てられる: 2.9 → 2 になります。
  • ロケール依存の日付形式: シートの地域設定によって day/month と month/day の解釈が変わります。確実にするには DATE(year, month, day) を使いましょう。
=EOMONTH(DATE(2022,3,12), 0)
  • タイムゾーンの表示差: Google Sheets上のシリアル日付はローカルタイムに影響することは少ないですが、Apps Scriptや外部APIと連携する場合はタイムゾーンに注意してください。

受け入れ基準

  • 入力が有効な日付(シリアル)として解釈されること。
  • months に整数が入力された場合、期待どおり月末が返ること。
  • うるう年(2月29日)や月ごとの日数差が正しく処理されること。
  • テンプレート利用時、結果セルが日付形式で表示されること。

テストケース(簡単な受け入れテスト)

  1. start_date: 2022-01-15, months: 0 → 結果: 2022-01-31
  2. start_date: 2020-02-01, months: 0 → 結果: 2020-02-29
  3. start_date: 2021-12-31, months: 1 → 結果: 2022-01-31
  4. start_date: “15/07/2023”(文字列), months: 0 → DATEVALUEで変換してから使用し結果が正しいことを確認

実務での活用アイデア(役割別チェックリスト)

  • 経理担当

    • 毎月の支払期日をEOMONTHで自動計算して請求書テンプレートに挿入
    • 四半期決算の締め日(例: =EOMONTH(A1, 0) で月末のマーク)
  • プロダクトマネージャー

    • サブスク契約の次回請求日をEOMONTHで一括更新
  • データアナリスト

    • 月次区切りの売上データ抽出時に月末日をキーとして結合

小さな実務的なSOP(標準作業手順)

  1. 日付列は常に DATE() か シートの日付形式で保存する。
  2. EOMONTHを使うセルは日付フォーマット(例: yyyy/mm/dd)に整える。
  3. 外部入力(CSV等)はインポート後に DATEVALUE を使って検証。
  4. テンプレートではエラーチェック(ISDATE相当)を入れる:
=IF(ISDATE(A2), EOMONTH(A2,B2), "入力が不正な日付です")

(注: Google SheetsにはISDATE関数がないため、代替として VALUE でエラー判定を行うパターンも使います)

決定ツリー(いつEOMONTHを使うか)

flowchart TD
  A[開始日と期間があるか?] -->|はい| B{月末が必要か?}
  A -->|いいえ| Z[日付を用意する]
  B -->|はい| C[EOMONTHを使う]
  B -->|いいえ| D[EDATEまたはDATE関数]
  C --> E[結果を日付形式で整形]
  D --> E

用語集(1行定義)

  • 日付シリアル: スプレッドシート内部で日付を表す数値。
  • months: EOMONTHが受け取る「月数」引数(正で未来、負で過去)。
  • うるう年: 4年ごとに2月が29日になる年。EOMONTHは自動で対応。

セキュリティとプライバシーの注意点

EOMONTHは表示上の日付計算のみ行います。個人データや機密データを扱う際は、シートの共有設定とアクセス権限を適切に管理してください。

次に学ぶと良い関数

  • EDATE: 同日に基づく月移動
  • WORKDAY / NETWORKDAYS: 営業日ベースの計算
  • DATEVALUE / DATE: テキスト日付の変換と固定化

まとめ

EOMONTHは、月末基準の日付処理を簡潔に行える強力な関数です。請求期限や有効期限、月次レポートの境界日算出など、月末日が必要な業務で特に有用です。誤入力やロケール依存にだけ注意すれば、シンプルで信頼性の高い日付計算ができます。

FAQ

Q1: EOMONTHはExcelと互換性がありますか?

A1: はい。ExcelにもEOMONTH関数があり、基本的な挙動は同じです。ただし、表示形式やロケール設定には差が出ることがあります。

Q2: 日付がテキスト形式の場合はどうすればいいですか?

A2: DATEVALUE または DATE を使って日付シリアルに変換するか、インポート時に日付として認識させてください。

Q3: 月の最終営業日を求めたいです。EOMONTHだけでできますか?

A3: EOMONTHで月末を求めたあと、WORKDAYやNETWORKDAYSを組み合わせて最終営業日を求めるのが一般的です。

共有する: X/Twitter Facebook LinkedIn Telegram
著者
編集

類似の素材

Debian 11 に Podman をインストールして使う
コンテナ

Debian 11 に Podman をインストールして使う

Apt-pinning入門:Debianで複数リポジトリを管理
Linux

Apt-pinning入門:Debianで複数リポジトリを管理

OptiScalerでFSR 4を全対応ゲームに導入する方法
ゲーム

OptiScalerでFSR 4を全対応ゲームに導入する方法

Dansguardian と Squid(NTLM)を Debian Etch に導入する方法
ネットワーク

Dansguardian と Squid(NTLM)を Debian Etch に導入する方法

AndroidでSDカードのインストールエラーを修正する方法
トラブルシューティング

AndroidでSDカードのインストールエラーを修正する方法

KNetAttach と KDE の remote:/ でネットワークフォルダーを設定
Linux ネットワーク

KNetAttach と KDE の remote:/ でネットワークフォルダーを設定