Excelで各月の月末日を自動表示したいときに便利なのがEOMONTH関数です。EOMONTH関数を使うと、指定した日付が含まれる月の末日だけでなく、翌月や前月の月末日も簡単に求められます。
たとえば2030年8月の月末を求める場合、日付を数式へ直接指定する方法と、日付が入力されているセルを参照する方法があります。どちらも最終的に同じ日付を基準としていれば結果は同じですが、日付をどこから取得するかという点が異なります。
この記事では、EOMONTH関数の基本的な使い方から、日付を直接指定する場合とセル参照を使う場合の違い、各月の月末を連続して表示する方法まで具体例を交えて解説します。
EOMONTH関数とは?指定した月の月末日を求める関数
EOMONTH関数は、指定した開始日を基準として、指定した月数だけ前または後の月末の日付を返すExcel関数です。
基本的な書式は=EOMONTH(開始日,月)です。第1引数の「開始日」に基準となる日付を指定し、第2引数の「月」に何か月前または後の月末を求めるかを指定します。
たとえば2030年8月1日を基準として、その月の月末を求めるなら、考え方としては=EOMONTH(2030年8月1日,0)となります。「0」は開始日と同じ月を意味するため、結果は2030年8月31日になります。
日付を直接指定する場合とセル参照の違い
たとえばA2セルに「2030/8/1」が入力されているとします。このとき、=EOMONTH(A2,0)と入力すれば、A2の日付を基準にその月の末日が計算されます。
一方、数式の中に日付を直接指定することもできます。ただし、日付を文字列として直接記述する場合は構文に注意が必要です。たとえば=EOMONTH(“2030/8/1”,0)のように、日付部分だけをダブルクォーテーションで囲みます。
つまり、両者の違いは次のようになります。
| 数式 | 基準の日付 | 特徴 |
|---|---|---|
| =EOMONTH(“2030/8/1”,0) | 数式内に直接入力した2030/8/1 | 日付が固定される |
| =EOMONTH(A2,0) | A2セルに入っている日付 | A2を変更すると結果も自動的に変わる |
A2に2030/8/1が入っていれば、どちらの数式も基本的には2030/8/31という同じ結果になります。
「=EOMONTH(“2030/8/1,”0)」は数式の書き方に注意
日付を直接入力する場合、ダブルクォーテーションの位置を間違えるとExcelが正しい数式として認識できません。
たとえば=EOMONTH(“2030/8/1,”0)のような記述では、「2030/8/1,」までが文字列として扱われてしまうため、正しい構文になりません。
正しくは=EOMONTH(“2030/8/1”,0)です。「2030/8/1」だけをダブルクォーテーションで囲み、その後にカンマと0を入力します。
ただし、日付を数式へ直接記述する方法はExcelの地域設定や日付形式の影響を受ける可能性があります。そのため、実務では日付をセルへ入力して=EOMONTH(A2,0)のようにセル参照する方法や、DATE関数を利用する方法のほうが分かりやすく安全です。
より確実に日付を直接指定するならDATE関数を使う
日付を数式内に固定して指定したい場合は、文字列として「2030/8/1」と書く代わりにDATE関数を組み合わせる方法があります。
2030年8月の月末を求めるなら、=EOMONTH(DATE(2030,8,1),0)と入力できます。この場合、DATE関数が2030年8月1日というExcelの日付データを作り、それをEOMONTH関数が受け取ります。
この方法なら「年・月・日」が数値として明確に指定されるため、文字列の日付形式に依存しにくいというメリットがあります。
たとえば2031年2月の月末なら=EOMONTH(DATE(2031,2,1),0)となり、2031年2月28日が返されます。うるう年の場合もExcelが自動的に正しい月末を計算します。
EOMONTH関数の第2引数「0」の意味
EOMONTH関数の第2引数には、基準日から何か月ずらした月末を求めるかを指定します。0なら基準日と同じ月、1なら翌月、-1なら前月です。
たとえばA2に2030/8/1が入力されている場合、=EOMONTH(A2,0)なら2030/8/31、=EOMONTH(A2,1)なら2030/9/30、=EOMONTH(A2,-1)なら2030/7/31になります。
| 数式 | 意味 | A2が2030/8/1の場合 |
|---|---|---|
| =EOMONTH(A2,0) | 同じ月の月末 | 2030/8/31 |
| =EOMONTH(A2,1) | 翌月の月末 | 2030/9/30 |
| =EOMONTH(A2,2) | 2か月後の月末 | 2030/10/31 |
| =EOMONTH(A2,-1) | 前月の月末 | 2030/7/31 |
この仕組みを理解しておくと、請求締め日や月次集計、契約期間などの日付計算にも応用できます。
各月の月末日を縦に連続表示する方法
1月から12月までの月末を一覧にしたい場合は、セル参照とEOMONTH関数を組み合わせると簡単です。
たとえばA2に2030/1/1を入力し、B2に=EOMONTH(A2,0)と入力すれば、B2には2030/1/31が表示されます。
次の月を作る方法はいくつかあります。A3に=EDATE(A2,1)と入力して下方向へコピーすれば、A列には毎月1日の日付が並びます。それぞれに対してB列でEOMONTHを使用すれば月末一覧を作れます。
また、最初の月末から次の月末を直接求めるなら、B2に2030/1/31がある状態でB3へ=EOMONTH(B2,1)と入力し、そのまま下へコピーする方法もあります。これだけで2月末、3月末、4月末と連続して表示できます。
月末だけを連続して作るなら1つの基準日から計算できる
月末一覧を作るだけなら、開始日を1つ用意し、EOMONTH関数の第2引数を増やしていく方法も便利です。
たとえばA1に2030/1/1を入力し、A2に=EOMONTH($A$1,0)、A3に=EOMONTH($A$1,1)、A4に=EOMONTH($A$1,2)と入力すると、2030年1月末、2月末、3月末を順番に表示できます。
$A$1のような絶対参照にしておけば、基準日を固定したまま第2引数だけ変更できます。月次のスケジュール表や会計資料を作成するときにも利用しやすい方法です。
結果が数字になってしまう場合はセルの表示形式を確認
EOMONTH関数を入力した結果、「47725」のような数字が表示される場合があります。これは計算が失敗したわけではなく、Excelが日付を内部的なシリアル値として管理しているためです。
Excelでは日付を連続した数値として保存し、それをセルの表示形式によって「2030/8/31」のような日付に見せています。
数字になった場合は、対象セルを選択して「ホーム」タブの表示形式を「日付」や「短い日付形式」へ変更します。すると通常の日付表示になります。
たとえば同じ値でも、表示形式によって「2030/8/31」「2030年8月31日」「8月31日」など自由に見せ方を変更できます。EOMONTH関数の計算結果自体は同じです。
月だけ入力して月末を自動計算する方法
毎月の月末を管理する表では、年と月を別々のセルに入力して月末日を計算する方法も便利です。
たとえばA2に「2030」、B2に「8」と入力されている場合、=EOMONTH(DATE(A2,B2,1),0)と入力すれば2030/8/31を求められます。
この方法ならB2を9へ変更するだけで2030/9/30、10へ変更すれば2030/10/31へ自動的に変わります。年間予定表や月次締め日の管理など、入力値を変更しながら使う表に向いています。
EOMONTHと単純な日付入力の違い
「2030/8/31」と直接セルへ入力するだけでも月末を表示できますが、この方法では月が変わるたびに月末日を自分で判断して入力する必要があります。
月によって28日、29日、30日、31日と末日が違うため、手入力では間違いが起きやすくなります。特に2月はうるう年によって日数が変わります。
EOMONTH関数ならExcelがその月の正しい末日を自動計算するため、月末日を扱う表では直接入力よりも関数を使うほうが管理しやすいというメリットがあります。
まとめ:直接指定とセル参照の違いは「基準日をどこから取得するか」
EOMONTH関数は、指定した日付を基準に月末日を返す関数です。基本形は=EOMONTH(開始日,月)で、同じ月の末日なら第2引数へ0を指定します。
=EOMONTH(“2030/8/1”,0)は数式内に2030年8月1日を直接指定する方法で、=EOMONTH(A2,0)はA2セルに入力されている日付を利用する方法です。A2が2030/8/1なら、どちらも2030/8/31という同じ結果になります。
ただし、実際の表ではセル参照を使うほうが便利です。A2の日付を書き換えるだけでEOMONTHの結果も自動更新されるため、毎月の月末一覧やスケジュール管理にも応用できます。
日付を数式へ直接固定したい場合は、文字列で入力するより=EOMONTH(DATE(2030,8,1),0)のようにDATE関数を組み合わせる方法も覚えておくと、より確実に日付を扱えます。


コメント