月次レポートを作成する際、月末日を正確に計算する必要があります。手動で日付を入力すると、月によって日数が異なるため誤りが生じやすいです。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関数を使って月次レポートを自動化する具体的な手順を説明します。
基本の月末日取得方法
- セルに日付を入力する
A1セルに日付を入力します。例:2023年1月15日とします。 - EOMONTH関数を入力する
B1セルに「=EOMONTH(A1, 0)」と入力します。すると、2023年1月31日が表示されます。 - 書式を確認する
結果がシリアル値(44927など)で表示される場合は、セルの書式を「日付」に変更してください。
先月の末日と今月の末日を取得する
- 先月の末日を取得する
「=EOMONTH(TODAY(), -1)」と入力します。今日の日付に依存するため、月が変わると自動で更新されます。 - 今月の末日を取得する
「=EOMONTH(TODAY(), 0)」と入力します。当月の最終日が動的に表示されます。 - 来月の末日を取得する
「=EOMONTH(TODAY(), 1)」と入力します。翌月の末日が表示されます。
月初日との組み合わせで期間計算
- 当月の初日を求める
「=EOMONTH(TODAY(), -1) + 1」と入力します。前月の末日に1を加えると、当月1日になります。 - 当月の日数を計算する
当月末日から前月末日を引きます。「=EOMONTH(TODAY(), 0) – EOMONTH(TODAY(), -1)」で日数が求まります。 - SUMIFSの条件範囲に利用する
例えば、売上データから当月の合計を求める場合、SUMIFS(売上金額, 日付, “>=”&当月1日, 日付, “<="&当月末日) とします。セル参照で動かすと自動更新されます。
月次集計の自動化テンプレート
- 基準日を用意する
任意のセル(例:C1)に「=TODAY()」と入力して基準日を固定します。 - 各月の末日を一覧にする
C2に「=EOMONTH(C$1, ROW()-2)」と入力して下方向にコピーします。ROW関数で月の差分を生成し、各月の末日リストが作れます。 - 集計期間の開始日も自動化する
D2に「=C2 – (EOMONTH(C2, 0) – EOMONTH(C2, -1)) + 1」と入力すれば、その月の初日が求まります。 - 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
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
