Excel(エクセル)で特定の月の月末日や最後の平日を計算することは以外と難しいですよね。
例えば、「2024/11/15」の3か月後の月末日もしくは最後の平日を「2025/2/28(金)」と算出する、といった場合です。
このような計算をしたい時は、EOMONTH関数(イーオーマンス関数)を使用すると簡単に計算できます。
カレンダーや日程表を作成したり、請求書の支払期日を自動で計算させたいときなどに活用できます。
今回の記事では、以下の4つの内容を紹介します。
この記事で紹介すること
1.EOMONTH関数の使い方
2.数ヶ月後の月末日の日付と曜日を表示する方法
3.数か月後の最後の平日の日付と曜日を表示する方法
4.月単位の連続データを入力する方法(2024/11、2024/12、2025/1、2025/2・・・)
数ヶ月後(前)の月末日の日付と曜日を表示する方法
数か月後や数か月前の月末日とその曜日を表示する方法を紹介します。
支払期日や受取予定日やスケジュールの締め切り日などを作成する際に役立ちます。
使用するのは、EOMONTH関数(イーオーマンス関数)という月末の日付を表す関数です。
EOMONTH関数の書式と引数
EOMONTH関数の読み方は、「イーオーマンス関数」です。
読みづらい名前ですが、先頭の「EO」は「エンド オブ (end of)」の英語の頭文字からきています。
関数名からもイメージできるとおり、EOMONTH関数は、指定した基準日から、指定された月数だけ前または後の月の月末日を表示する関数です。
EOMONTH関数の書式と引数は以下のとおりです。
=EOMONTH(開始日,月)
第1引数「開始日」:計算の起点となる日付を入力します。日付が入力されたセルを指定することもできます。(例:「2024/11/29」、B3)
第2引数「月」:月数を指定します。正の数を入力すると起算日より後の日付、負の数を入力すると起算日より前の日付を返します。数値セルを指定することも可能です。(例:-2、3、A3)
それでは実際に「2025/2/15」の2か月後の月末が支払日となるように、EOMONTH関数を使ってみましょう。
手順1.EOMONTH関数を挿入
まず、支払期日を表示させたいセルにEOMONTH関数を挿入します。
=EOMONTH(
手順2.EOMONTH関数の第1引数を指定
EOMONTH関数の第1引数「開始日」に、基準となる日付セルを指定します。対象のセルをクリックして、「,」(カンマ)を入力してください。
=EOMONTH(B3,
手順3.EOMONTH関数の第2引数を指定
EOMONTH関数の第2引数「月」に月数を指定します。今回は、2か月後の月末日を表示したいので、「2」と入力するか「2」と入力されているセルを選択します。
=EOMONTH(B3,C3)
手順4.EOMONTH関数を確定
Enterキーで関数を確定します。そうすると、「45777」といった5桁のシリアル値が表示されます。シリアル値はエクセルが日付を管理している1桁以上の数値です。
シリアル値が表示されるのは、EOMONTH関数を挿入したセルの書式設定が「日付」になっていないことが原因です。
手順5.「セルの書式」を変更
右クリックメニューの「セルの書式設定」ボタンをクリックします。
「セルの書式設定」画面の「表示形式」タブの「日付」を選択し、日付の表示の種類を選択します。
手順6.月末日の確認
そうすると、シリアル値が日付に変更され、「2025/2/15」の2か月後の月末の支払日を「2025/4/30」と表示することができました。
月末日の日付と曜日を表示する方法
それでは、EOMONTH関数を使った具体的な事例を紹介します。
下の請求書のI8セル(赤枠部分)にEOMONTH関数を挿入して、支払期日(※発行日の2か月後)と曜日を自動で入力させます。
手順1.EOMONTH関数を使用
支払日は2か月後の月末日のため、支払日を表示させたいセルに「=EOMONTH(I5,2)」と入力します。日付の表示を曜日付きに変えるため、右クリックメニューの「セルの書式設定」を押します。
手順2.日付を曜日付きに変更
「セルの書式設定」画面の「表示形式」タブの「ユーザー定義」を選択し、以下の表示コードを貼り付けしてください。
yyyy/m/d(aaa)
手順3.日付を曜日付きに変更
そうすると、「2025/1/31」が「2025/1/31(金)」となり、曜日付きの表示に変更することができました。
この他にも、セルの書式設定を使用すれば、日付と曜日を別々に表示するなど、様々な表示形式パターンに変更することができます。
以下の記事で詳しい操作方法と手順を紹介しているので、合わせて参考にしてください。
数ヶ月後(前)の最後の平日の日付を表示する方法
月末日が土曜日や日曜日だった場合、会社が休日のためその前の最後の平日の日付を表示させたい場合があります。
そんなときは、上記で紹介したEOMONTH関数と、WEEKDAY関数とMAX関数も組み合わせて利用します。
WEEKDAY関数とMAX関数の基本的な使い方と、最後の平日を表示させる方法を紹介します。
WEEKDAY関数の書式と引数
WEEKDAY関数は、日付から曜日を判断して、1~7の数値を返す関数です。
WEEKDAYの引数の構文は以下のとおりです。
=WEEKDAY(シリアル値,[週の基準])
第1引数「シリアル値」:日付セルを選択するか、シリアル値を入力します。
第2引数「週の基準」:「1(もしくは省略)」か「2」か「3」を指定します。
第2引数「週の基準」は、「1」か「2」か「3」を選択することで、返される数値が以下の表のように異なります。
第2引数 | 月曜日 | 火曜日 | 水曜日 | 木曜日 | 金曜日 | 土曜日 | 日曜日 |
1の場合 | 2 | 3 | 4 | 5 | 6 | 7 | 1 |
2の場合 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
3の場合 | 7 | 1 | 2 | 3 | 4 | 5 | 6 |
例えば、「2024/12/2」のセルに対してWEEKDAY関数を使用します。第2引数を変えることで、「1」「2」「3」と異なる数値が表示されます。
MAX関数の書式と引数
MAX関数(マックス)は、指定したセル範囲の中から最大値を表示する関数です。
MAX関数の書式と引数は以下のとおりです。
=MAX(数値1,[数値2],…)
下のテスト結果表のように、対象範囲のE列(得点列)を選択するだけで使用できるシンプルな関数です。
=MAX(E3:E9)
最後の平日の日付と曜日を表示する方法
結論から伝えると、特定の月の最後の平日を求めるためには、EOMONTH関数とWEEKDAY関数とMAX関数を使った以下の数式を挿入します。
=EOMONTH(B3,C3)-MAX(WEEKDAY(EOMONTH(B3,C3),2)-5,0)
B3セル⇒日付セルを指定
C3セル⇒何か月後の月末を求めたいかの数値セルを指定
この数式の仕組みを簡単に解説します。
まず、数式の前半の「=EOMONTH(B3,C3)」で月末の日付を算出しています。
MAX関数の中にある「WEEKDAY(EOMONTH(B3,C3),2)」で、月末の日付が土曜日であれば「6」、日曜日であれば「7」、それ以外であれば「1~5」の数値が返されます。
さらに、MAX関数を使って「MAX(WEEKDAY(EOMONTH(B3,C3),2)-5,0)」と入力することで、土曜日であれば「1(6-5)」、日曜日であれば「2(7-5)」、それ以外であれば「0」が返されます。
その結果、前半の数式で算出した日付から、月末日の日付から土曜日であれば1、日曜日であれば2が引かれるので、結果として最後の平日が表示されます。
月単位で連続データを入力する方法
EOMONTH関数を使うことで、月単位で連続データを入力することができます。
例えば、セルに「2024/12、2025/1、2025/2、2025/3・・・」といったように、ひと月ずつ足していくデータのことです。
このような連続データを作成する際、手作業で入力で作成するのは大変なので、EOMONTH関数を使った方法を覚えましょう。
手順1.「セルの書式設定」をクリック
日付の連続データを入力したいセルを選択し、右クリックメニューの「セルの書式設定」をクリックします。
手順2.「セルの表示形式」を変更
表示形式タブの「ユーザー定義」を選択し、「月日」が表示される表示コードを入力します。(例:yyyy/m)
「2024/12」と表示したい場合⇒「yyyy/m」
「24/12」と表示したい場合⇒「yy/m」
「24年12月」と表示したい場合⇒「yy"年"m"月"」
手順3.先頭セルに日付を入力
先頭のセルに日付を入力します。(例:2024/12)
手順4.EOMONTH関数を挿入
下のセルにEOMONTH関数を挿入し、翌月の日付を表示させます。
=EOMONTH(B3,1)
手順5.EOMONTH関数をコピペ
下のセルにEOMONTH関数をコピー&ペーストします。そうすると、月単位の連続データを完成させることができました。