【関数】開始日から指定の月数を前後させた月の最終日を計算できる「EOMONTH」の使い方
AさんAさん

Excelで契約終了日や支払日等を計算するために、「開始日」の列を基準に、指定の月数を加算した月の最終日を計算したいです。
月によって日数が違うので、どうすればうまく計算できますかね?

森田森田

その場合は、関数のEOMONTHを活用すると良いですよ!
では、EOMONTHの使い方について解説していきますね。

はじめに

この記事は関数の概要とDATEYEARMONTHの使い方を把握していることが前提です。

参考記事

関数の概要とDATEYEARMONTHの使い方については以下の記事をご参照ください。




開始日を起点に数か月後/数か月前の月末最終日を計算したい場合は「EOMONTH」が有効

契約終了日や支払日を計算する場合、開始日から特定の月数をスライドした月の最終日を求める必要があります。

通常、関数で行う場合はDATEYEARMONTHと四則演算を組み合わせた数式で対応することがオーソドックスです。

たとえば、契約開始日の3か月後の月の最終日(契約終了日)を求める場合、次のような数式になります。

この方法でも希望の結果を得ることはできますが、複数の関数を組み合わせるため、数式が長くなってしまうことが難点です。

こんな場合、関数のEOMONTHを使うとシンプルな数式で同じ結果を得ることが可能です。
EOMONTHは「エンド・オブ・マンス」と読む。

EOMONTHを使うことで、開始日から指定の月数を前後させた月の最終日(シリアル値)を計算できます。

ちなみに、シリアル値は、190011日を起点に何日目かをカウントした数値です(「44082」なら、190011日から44082日目)。

参考記事

開始日から指定の月数を前後させた日付(シリアル値)を計算したい場合は「EDATE」を使用してください(詳細は以下の記事を参照)。

EOMONTHの構文

EOMONTHの構文は以下の通りです。

=EOMONTH(開始日,月)
開始日から起算して、指定した月だけ前あるいは後の最終日に対応するシリアル値を計算します。

引数名 必須 データ型 説明
開始日 すべて 起算日を示す単一セル(値が日付)を指定します。
すべて 「開始日」から起算した月数を指定します。
※負の数を指定の場合、「開始日」より前の日付となる

各引数に無効な値(文字列等)を指定した場合、エラー値「#VALUE!」が表示。
引数「開始日」に「1900/1/1~9999/12/31」以外の日付(シリアル値)を入力した場合、エラー値「#NUM!」が表示。
引数「開始日」・「月」の和が「1900/1/1~9999/12/31」以外の日付(シリアル値)になる場合、エラー値「#NUM!」が表示。
引数「月」を小数点以下まで指定した場合、整数以外は切り捨てされる。

【参考】EOMONTHは「日付/時刻関数」

あくまで参考情報となりますが、EOMONTHはリボン「数式」タブの関数ライブラリの「日付/時刻」に分類されています。

実際にEOMONTHを活用する際は、以下で解説しているように直接入力で挿入していきましょう。

EOMONTHの使用結果イメージ

EOMONTHを使い、開始日から指定の月数を前後させた月の最終日を計算するイメージは以下の通りです。

今回は「契約開始日」列から3か月後の月の最終日を計算しました。

上記のように計算列としてEOMONTHを使う場合、1レコードにつき1つの関数を使います。
「計算列」とは、数値/日付/時刻の列の値を計算した新たな列のこと。

ベースの数式をセットしたら、他のセルへペーストしましょう。

なお、1~31日のどの日に開始しても開始月が「1」としてカウントされる契約時に次回契約更新日を計算したい場合、EOMONTHで現契約の終了日(満了日)を計算し、その結果に「+1」をすればOKです(次回契約更新日は現契約終了日の1日後のため)。
数式の例:=EOMONTH(C2,3)+1

EOMONTHの数式の挿入手順

上記の結果を得るための手順は以下の通りです。

  1. 関数を挿入するセルを選択
    ※今回はD2セル
  2. =eo」等と入力
  3. サジェストから「EOMONTH」を選択し、「Tab」キーで確定
  4. 開始日を示すセルを選択
    ※今回はC2セル
  5. コンマ(,)を入力
  6. 月数を示すセルを選択 or 整数を入力
    ※今回は「3」を入力
  7. Enter」キーで確定
  8. 1行目の数式をコピーし、以降のセルへペースト
    ※今回はD3~D11セルへペースト

手順②の際にIMEを半角英数モードにすること。
テーブルの場合、手順⑧は不要(全レコードへ数式が自動的にコピーされる)。

サンプルファイルで練習しよう!

可能であれば、以下のサンプルファイルをダウンロードして、実際に操作練習をしてみてください。

サンプルファイル_ワークシート関数_EOMONTH.xlsx

※サンプルファイルのダウンロードには無料メルマガに登録いただく必要があります。
(上記リンクから登録フォームへ遷移します)

ブックを開いたら、次の手順を実施してください。(今までの解説のまとめです)

  1. 関数を挿入するセルを選択
    ※今回はD2セル
  2. =eo」等と入力
  3. サジェストから「EOMONTH」を選択し、「Tab」キーで確定
  4. 開始日を示すセルを選択
    ※今回はC2セル
  5. コンマ(,)を入力
  6. 月数を示すセルを選択 or 整数を入力
    ※今回は「3」を入力
  7. Enter」キーで確定
  8. 1行目の数式をコピーし、以降のセルへペースト
    ※今回はD3~D11セルへペースト

本記事の解説と同じ結果になればOKです!

さいごに

いかがでしたでしょうか?

EOMONTHは日付データを元にした計算列の追加に役立つ関数の一つです。

定期的に日付の月計算を行う計算列を作成する機会があるなら、ぜひ覚えておいた方が良いですね。

なお、EOMONTH以外にもExcelでのデータ整形の各種テクニックを拙著で解説していますので、こちらも参考にしてみてください。


ご参考になれば幸いですm(_ _)m

森田森田

EOMONTHとセットで覚えておいた方が良い関数は、開始日から指定の月数を前後させた日付を計算できる「EDATE」です。
他にもDATEYEARMONTHDAY等や四則演算も含め、ケースに応じてうまく使い分けて希望の日付を計算できるようになるとベターですね!