ADVERTISEMENT

【Googleスプレッドシート】EOMONTH関数で月末日を取得!月次レポートの自動化

【Googleスプレッドシート】EOMONTH関数で月末日を取得!月次レポートの自動化
🛡️ 超解決

月次レポートを作成する際、月末日を正確に計算する必要があります。手動で日付を入力すると、月によって日数が異なるため誤りが生じやすいです。EOMONTH関数を使えば、任意の日付から月末日を自動で取得できます。この記事では、EOMONTH関数の基本構文から応用テクニックまでを解説します。月次レポートの作成を自動化したい方は、ぜひ参考にしてください。

【要点】EOMONTH関数で月末日を自動計算し月次レポートを効率化

  • 構文 =EOMONTH(開始日, 月): 開始日から指定月後の月末日を返します。第2引数に0で当月の末日、1で翌月の末日、-1で前月の末日を取得できます。
  • 月次集計の期間指定に活用: EOMONTH(TODAY(), 0) で当月末日、EOMONTH(TODAY(), -1)+1 で当月1日を求め、SUMIFSやQUERYの条件範囲に利用します。
  • 日数計算の簡略化: =EOMONTH(A1, 0) – EOMONTH(A1, -1) で前月末日からの経過日数を算出できます。

ADVERTISEMENT

EOMONTH関数が月末日を計算する仕組み

EOMONTH(End of Month)関数は、指定した日付から見て、指定された月数だけ前後した月の最終日を返します。Googleスプレッドシートでは日付をシリアル値(1900年1月1日を1とした連続数)で管理しており、EOMONTH関数はこのシリアル値を内部計算して月末日に調整します。たとえば、2023年1月15日を開始日として月に0を指定すると、2023年1月31日のシリアル値が返ります。月に1を指定すれば2月28日(または閏年なら29日)、-1を指定すれば2022年12月31日となります。この関数はうるう年も自動認識しますので、手動で月末日を計算する必要はありません。

EOMONTH関数を使った月次レポート自動化の手順

ここからは、実際にEOMONTH関数を使って月次レポートを自動化する具体的な手順を説明します。

基本の月末日取得方法

  1. セルに日付を入力する
    A1セルに日付を入力します。例:2023年1月15日とします。
  2. EOMONTH関数を入力する
    B1セルに「=EOMONTH(A1, 0)」と入力します。すると、2023年1月31日が表示されます。
  3. 書式を確認する
    結果がシリアル値(44927など)で表示される場合は、セルの書式を「日付」に変更してください。

先月の末日と今月の末日を取得する

  1. 先月の末日を取得する
    「=EOMONTH(TODAY(), -1)」と入力します。今日の日付に依存するため、月が変わると自動で更新されます。
  2. 今月の末日を取得する
    「=EOMONTH(TODAY(), 0)」と入力します。当月の最終日が動的に表示されます。
  3. 来月の末日を取得する
    「=EOMONTH(TODAY(), 1)」と入力します。翌月の末日が表示されます。

月初日との組み合わせで期間計算

  1. 当月の初日を求める
    「=EOMONTH(TODAY(), -1) + 1」と入力します。前月の末日に1を加えると、当月1日になります。
  2. 当月の日数を計算する
    当月末日から前月末日を引きます。「=EOMONTH(TODAY(), 0) – EOMONTH(TODAY(), -1)」で日数が求まります。
  3. SUMIFSの条件範囲に利用する
    例えば、売上データから当月の合計を求める場合、SUMIFS(売上金額, 日付, “>=”&当月1日, 日付, “<="&当月末日) とします。セル参照で動かすと自動更新されます。

月次集計の自動化テンプレート

  1. 基準日を用意する
    任意のセル(例:C1)に「=TODAY()」と入力して基準日を固定します。
  2. 各月の末日を一覧にする
    C2に「=EOMONTH(C$1, ROW()-2)」と入力して下方向にコピーします。ROW関数で月の差分を生成し、各月の末日リストが作れます。
  3. 集計期間の開始日も自動化する
    D2に「=C2 – (EOMONTH(C2, 0) – EOMONTH(C2, -1)) + 1」と入力すれば、その月の初日が求まります。
  4. SUMIFSに組み込む
    各月の売上合計をE列に表示するなら、「=SUMIFS(売上!B:B, 売上!A:A, “>=”&D2, 売上!A:A, “<="&C2)」と入力します。

EOMONTH関数使用時の注意点とよくある失敗

EOMONTH関数は便利ですが、いくつか注意すべきポイントがあります。ここではよくある失敗例を挙げます。

開始日に日付以外の文字列を指定するとエラーになる

EOMONTH関数の第1引数には日付型の値が必要です。文字列(例:”2023/1/15″)を直接入力するとエラーになることがあります。文字列を日付に変換するにはDATEVALUE関数を使います。例えば「=EOMONTH(DATEVALUE(“2023/1/15”), 0)」とすると正しく動作します。日付がシリアル値で格納されていることを確認しましょう。

月引数に小数を指定すると整数部分のみが使用される

第2引数の月に小数(例:1.5)を指定した場合、小数点以下は切り捨てられて整数部分の1だけが有効になります。つまり、=EOMONTH(A1, 1.5) は =EOMONTH(A1, 1) と同じ結果です。誤解しないように注意しましょう。

結果がシリアル値で表示された場合の対処

EOMONTH関数の戻り値はシリアル値(数値)です。そのままでは日付として認識されず、44927のような数値が表示されます。セルの書式を「表示形式」→「日付」に変更してください。また、スプレッドシート全体の地域設定によって日付表記が変わることもあります。

営業日や祝日を考慮しない

EOMONTH関数は単にカレンダー上の月末日を返すもので、営業日や祝日の調整は行いません。月末が土日や祝日に当たる場合に「前営業日」を求めたいときは、WORKDAY関数と組み合わせる必要があります。例えば「=WORKDAY(EOMONTH(A1,0)+1, -1)」とすると、月末の前営業日を取得できます。

ADVERTISEMENT

EOMONTH関数と類似関数の比較

EOMONTH関数と似た働きをする関数として、EDATEやDATEがあります。それぞれの特徴を比較表にまとめました。

関数名 構文 返す日付 特徴
EOMONTH =EOMONTH(開始日, 月) 指定月後の月末日 月末調整に特化
EDATE =EDATE(開始日, 月) 指定月後の同日 日付を保ちつつ月加減
DATE =DATE(年, 月, 日) 指定年月日の日付 手動で年月日を指定
DAY =DAY(日付) 日のみの数値 月末判定には不向き

月次レポートで月末日を必要とする場合はEOMONTHが最適です。EDATEは同じ日の月移動に便利ですが、月末調整は行われません。DATEは柔軟に日付を作れますが、月末日を動的に計算するには条件分岐が必要になります。

まとめ

EOMONTH関数を活用すれば、月末日の計算を完全に自動化できます。基本の構文を覚えれば、月次レポートの集計期間指定や日数計算が簡単になります。SUMIFSやQUERYと組み合わせることで、データの月次集計も効率化できます。ぜひ実際のシートでEOMONTH関数を試して、月次業務の負担を減らしてください。応用として、WORKDAY関数と組み合わせた営業日調整も挑戦してみましょう。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。