Excel

ExcelのEOMONTHで「末日・1日」を自動化する方法

k.w
\お買い物マラソン開催中/

この記事では、ExcelのEOMONTH関数を使って「月末日」と「月初(1日)」を自動で求める方法を、やさしい日本語でまとめます。はじめに考え方をつかみ、次に具体的な式を試せる順番で説明します。関数の結果は数値(Excel内部の日付番号)なので、見た目を「日付」に整える手順もあわせて紹介します。

スポンサーリンク

EOMONTH関数で月末を自動入力する方法

EOMONTHは、ある日付から指定した月数ぶん移動した月の「末日(最終日)」を返す関数です。返り値は日付番号なので、セルの表示形式を「日付」に変えるとカレンダーのように見えます。ここでは、関数の基本、日付表示への切り替え、当月・前月・翌月の末日を自動で出す式パターンを紹介します。

EOMONTH関数の使い方

書式:EOMONTH(開始日, 月数) です。「開始日」は基準となる日付か、日付が入ったセルを指定します。「月数」は何か月先(または前)に移動するかを指定します。0は「同じ月」、1は「翌月」、-1は「前月」を意味します。返り値は移動後の月の末日です。

例1:セルA2に 2025/10/6 が入っているとします。A2の月(2025年10月)の末日を求める式は次のとおりです。

=EOMONTH(A2,0)

例2:前月(2025年9月)の末日が必要なら次のとおりです。

=EOMONTH(A2,-1)

例3:翌月(2025年11月)の末日が必要なら次のとおりです。

=EOMONTH(A2,1)

基準日を手入力しない場合は、今日の日付を返すTODAY関数と組み合わせられます。今月末をいつでも自動で表示したいときは、次の式が便利です。

=EOMONTH(TODAY(),0)

シリアル値(Excelの日付番号)を日付として表示する方法

EOMONTHの結果は内部的には日付番号です。番号のままでは意味が分かりにくいため、表示形式を「日付」に変えます。方法は次の手順です。

  • 対象のセルまたは列を選択する
  • ホームタブで「表示形式」から「短い日付」または「長い日付」を選ぶ
  • 見た目を細かく指定したい場合は、セルを右クリックして「セルの書式設定」から「日付」や「ユーザー定義」を選び、yyyy/mm/dd などの書式を設定する

数式と表示形式は別物です。計算は数式が、見た目は表示形式が担当します。結果が####に見えるときは、列幅が狭いなど、見た目の問題である場合が多いです。

今月末・前月末・翌月末を自動表示する式パターン集

基準日をA2、今日基準をTODAY()としたときの代表的な式は次のとおりです。必要に応じて使い分けます。

  • 今月末(基準日A2)= EOMONTH(A2,0)
  • 前月末(基準日A2)= EOMONTH(A2,-1)
  • 翌月末(基準日A2)= EOMONTH(A2,1)
  • 今月末(今日基準)= EOMONTH(TODAY(),0)
  • 翌々月末(今日基準)= EOMONTH(TODAY(),2)

同じ表やレポートで毎月の締め日を自動更新したいときは、基準日を固定セルに入れて参照すると管理しやすくなります。たとえば、セルB1に基準日を置き、式側では EOMONTH($B$1,0) のように絶対参照にしておくと、コピーしても基準がずれません。

EOMONTHとEDATE/DATEの使い分け(比較表)

EOMONTHは「末日」を返します。似た関数にEDATE(指定月数だけずらした同じ日付)と、DATE(年・月・日から日付を組み立てる)があります。用途が重なる場面では、目的に合うものを選ぶとトラブルを避けやすくなります。

関数主な目的戻り値のイメージ相性の良い関数注意点
EOMONTH月の末日を取得移動後の月の最終日TODAY, TEXT結果は日付番号。表示形式で日付にする
EDATE月単位で日付をシフト開始日の「同じ日」を月移動DAY, EOMONTH月末近辺で、月によって日が存在しない場合がある
DATE年・月・日から日付を組み立て指定した年/月/日YEAR, MONTH, DAY月や日を加減算しても自動で繰上げ・繰下げされる

「末日を使いたい」ならEOMONTHを第一候補にします。「同じ日付を月移動」ならEDATEが便利です。「年・月・日を部品として扱う」場合はDATEで安全に組み立てるのが分かりやすいです。

FAQ:EOMONTHで####や#VALUE!が出る/月末がずれるのはなぜ?

Q:####が表示されます。どうすればよいですか?

A:列幅が足りない、負の日付になっている、表示形式が日付でない、などの見た目が原因のことが多いです。まず列幅を広げ、表示形式を「短い日付」にして確認します。

Q:#VALUE!が出ます。何が原因ですか?

A:「開始日」が正しい日付として認識されていない可能性があります。テキストの「2025-10-06」のように見えても、実体が文字列だと計算できません。DATE関数で年・月・日から組み立てるか、日付として再入力します。

Q:月末が1日ずれることがあります。

A:開始日が別のシートや外部データから来ていて、「日付」と「文字列」が混在していると、表示上は同じでも結果がずれることがあります。問題のセルを選び、数式バーの表示、表示形式、数式の参照先を順番に確認します。

Q:1900年や1904年など、古い日付で結果が想定と違います。

A:ブックの「日付システム」(1900年基準/1904年基準)が異なると日付番号が変わります。環境の違うファイルを受け取った際は、オプションの該当設定を確認し、同じ基準で作業します。

EOMONTH関数で月初を自動入力する方法

月初(1日)は、EOMONTHの結果に1日を足すことで求められます。考え方はシンプルで、ある月の末日を出して、その翌日を取る、という流れです。ここでは基本式、よく使う当月1日・前月1日・翌月1日の式、見た目の整え方、曜日表示や営業日への応用を紹介します。

EOMONTHで月初を求める基本式(EOMONTH+1日の加算)

月初は次の発想で求めます。「その月の1日」=「前月の末日」+1日。式は次のとおりです。

=EOMONTH(開始日,-1)+1

たとえば、A2が2025/10/6なら、2025年10月の1日は次の式で求められます。

=EOMONTH(A2,-1)+1

今日を基準に常に「今月1日」を表示したい場合は次のとおりです。

=EOMONTH(TODAY(),-1)+1

当月1日・前月1日・翌月1日の式パターン集(固定セルと相対参照)

基準日をA2としたときの代表的な式をまとめます。参照を固定したい場合は、$を使って絶対参照にします。

  • 当月1日(基準日A2)= EOMONTH(A2,-1)+1
  • 前月1日(基準日A2)= EOMONTH(A2,-2)+1
  • 翌月1日(基準日A2)= EOMONTH(A2,0)+1
  • 今月1日(今日基準)= EOMONTH(TODAY(),-1)+1
  • 翌月1日(今日基準)= EOMONTH(TODAY(),0)+1

基準日をセルB1に置いて全体で使い回す場合は、EOMONTH($B$1,-1)+1 のように指定するとコピー時も安定します。月次の表では、列方向に式をコピーし、月数の部分だけを0,1,2…と増やす方法が管理しやすいです。

表示形式と曜日表示(TEXT関数の併用)

月初が求められたら、見やすい形に整えます。標準的な日付表示にするには、セルの表示形式を「日付」にします。曜日も合わせて表示したい場合は、TEXT関数で次のように書式化できます。

=TEXT(EOMONTH(A2,-1)+1,”yyyy/mm/dd (aaa)”)

この式は、月初の日付を「2025/10/01 (月)」のように表示します。計算に使う場合は、TEXTで文字列にせず、日付番号のまま扱い、見た目はセルの表示形式で整えるのが一般的です。

FAQ:1日にならない/土日を避けたいときは?(NETWORKDAYSの紹介)

Q:式を入れても「1日」になりません。

A:基準日の参照先が意図と違う、または日付ではなく文字列を参照している可能性があります。EOMONTHの結果に+1が付いているか、開始日のセルの種類(数式バーで確認)を見直します。

Q:月初が土日や祝日のとき、次の営業日を求めたいです。

A:NETWORKDAYSまたはWORKDAYを使う方法があります。たとえば、当月1日の次の営業日は、WORKDAY(EOMONTH(A2,-1)+1,1,祝日一覧) のように求められます。祝日一覧は別表に用意して参照します。

Q:書式を変えても表示が思うようになりません。

A:セルに外部から取り込んだ文字列が入っていると、表示形式を変えても日付にならないことがあります。DATE関数で年・月・日を組み立て直す、または区切り位置でデータ型を日付に変換します。

ABOUT ME
スポンサーリンク
記事URLをコピーしました