- Home »
- エクセル関数の技 »
- 日付に関する技/月末など指定日を求めたい
更新:2025/4/3;作成:2009/5/28
DATE関数を使って月末の日を求める
- Excelでは日付はシリアル値という値で関連付けられています。
- 「月末とは次の月の1日の前日である」と考えれば容易な式で求めることができます。
- 例えば、2025年1月末日なら、2025/2/1の前の日と考えます。
DATE関数を使って =DATE(2025,2,1)-1 → =DATE(2025,2,0)と書くことができます。
- A列の日付の月末を求める例
年はYEAR関数、月はMONTH関数で求め「+1」して次の月とします。日にちは前日なので「0」とします。
Excel for Microsoft365,Excel2021以降のSpillが利用できる場合は
=DATE(YEAR(A1:A8),MONTH(A1:A8)+1,0) と入力します。
Excel2019以前は =DATE(YEAR(A1),MONTH(A1)+1,0) と入力して、下方向へ数式をコピーします。
EOMONTH関数を使って月末の日を求める
- Excel2003以前では、この関数を使うには分析ツールのアドインを有効にしておく必要があります。
[ツール]→[アドイン]を選択し、[アドイン]ダイアログボックスの「分析ツール」にチェックを入れます。
- EOMONTH関数の構文 :=EOMONTH(開始日,月)
開始日から起算した月数を指定します。月に正の数を指定すると、起算日より後の日付を返し、負の数を指定すると、起算日より前の日付を返します。
EOMONTH関数の詳細な使い方は 月末の日付を返す(EOMONTH) をご覧ください。
- 当月末日は=EOMONTH("2025/2/10",0) とか 先月末日は=EOMONTH("2025/3/10",-1) と日付はダブルクォーテーションでくくります。
セルに入力された値の場合は =EOMONTH("2025/2/10",A1) とします。
- A列の日付の月末を求める例
専用の関数なので、シンプルな式になります。ポイントは「月」の指定の仕方でしょう。
この関数はSpillに対応していないので、C1セルに =EOMONTH(A1,0) と入力して、下方向へ数式をコピーします。
月末が土日であったら前営業日を求める
- 次の項で説明するWORKDAY関数を利用します。ここでは結果を示します。
WORKDAY関数の構文:=WORKDAY(開始日,日数,[祭日])
詳細は 稼働日を求める(WORKDAY・WORKDAY.INTL関数の使い方) をご覧ください。
- ここでは、2025/8/5 の月末を求めます。
ただし、月末が土日であったらその前日を求めます。
これを求めるには翌月の1日から前方向へ営業日を探します。2009/5/31は日曜日ですので5月末の営業日は2009/5/29となります。
翌月の1日は EOMONTH(A2,0)+1 で求めます。2025/9/1 となります。
この日から前方向の営業日(土日を除く)には
=WORKDAY(EOMONTH(A2,0)+1,-1) とします。
2025/8/29(金)を求めることができます。
月末が祝祭日であったら前営業日を求める
- このような月末はないだろう・・・と思いましたが、2007年4月29日が昭和の日で日曜日にあたり、翌30日は振り替え休日でした。
該当する日を調べてみると2029/4/29、2035/4/29が日曜日になります。祝日に変更がなければ、翌30日は振り替え休日となります。
- WORKDAY関数を利用します。また、祝日のリストが必要になります。
なお、祝日のリスト範囲には「祝日」と名前を定義しています。
- 土日祝日を除いた翌営業日は=WORKDAY(EOMONTH(A2,0)+1,-1,祝日) で求ることができます。
- 月の締日が20日でこの日を超えると翌月の20日が締日となるとします。
- 日付が20日以前であれば「その月の20日」が締日で、20日を超えると「翌月の20日」が締日なので、IF関数で場合分けすれば良さそうです。
- =IF(DAY(A1)<=20,DATE(YEAR(A1),MONTH(A1),20),DATE(YEAR(A1),MONTH(A1)+1,20))
- 条件を「DAY(A1)>20」を満たすか否かとすれば、満たす時は[True、1」となり、満たさないときは「False、0」となるので
=DATE(YEAR(A1),MONTH(A1)+(DAY(A1)>20),20) とすることができます。
- 結果が0かもしくは1を足すのですから、この条件に合う論理式を入れればよいということです。
1となるのは日が20を超えたときですから(DAY(A1)>20)というのが考えられます。超えなかったらFalseで0となり都合がよいわけです。
土日であったら翌営業日としたい
- 次の項で説明するWORKDAY関数を利用します。ここでは結果を示します。
- C2:C5セルには20日締めの
C2セル =DATE(YEAR(A1),MONTH(A1)+(DAY(A1)>20),20)
- 例えば下図のように、2025/4/20は日曜日なので、土日を除いた翌営業日は2025/4/21となります。
2025/9/20は土曜日なので、土日を除いた翌営業日は2025/9/22とします。
土日を除いた翌営業日は=WORKDAY(A2-1,1) で求めます。締日の前日から数えて次の営業日を求めます。
これに、締日の計算式を入れこむと、
=WORKDAY(DATE(YEAR(A2:A5),MONTH(A2:A5)+(DAY(A2:A5)>20),20)-1,1) となります
土日祝祭日であったら翌営業日としたい
- 次の項で説明するWORKDAY関数を利用します。また、祝日のリストが必要になります。
なお、祝日のリスト範囲には「祝日」と名前を定義しています。
土日祝日を除いた翌営業日は=WORKDAY(B2-1,1,祝日) で求めます。締日の前日から数えて次の営業日を求めます。
これに、締日の計算式を入れこむと、=WORKDAY(DATE(YEAR(A2),MONTH(A2)+(DAY(A2)>20),20)-1,1,祝日) となります。
2025/7/21は海の日で祝日になりますので、E3セルはその翌日 2025/7/22 となります。
- ある指定日から、土日を除いた5日後の営業日(平日)の日付を求めたいとします。
- WORKDAY関数が利用できます。
- Excel2003以前では、この関数を使うには分析ツールのアドインを有効にしておく必要があります。
[ツール]→[アドイン]を選択し、[アドイン]ダイアログボックスの「分析ツール」にチェックを入れます。
- =WORKDAY(開始日,日数,祭日)
たとえば、2025/4/28から5日後の日付を求めます。
カレンダーはこのようになっています。

5日後の土日を除いた営業日を求める
- 上の表の配置でしたら、=WORKDAY(B6,5) となります。
日付を指定するときは =WORKDAY("2025/4/28",5) とか =WORKDAY(DATE(2025,4,28),5) とします。
これで、「2025/5/5」が求められます。
5日後の土日祝祭日を除いた営業日を求める
- なお、祝日のリスト範囲には「祝日」と名前を定義しています。
- =WORKDAY(B6,5,祝日) とすると計算できます。
日付を指定するときは =WORKDAY("2025/4/28",5,祝日) とか =WORKDAY(DATE(2025,4,28),5,祝日) とします。
これで、「2025/5/11」が求められます。
- ある期間から、土日を除いた営業日(平日)の日数を求めたいとします。
- =NETWORKDAYS(開始日,終了日,祭日) を使います。
- Excel2003以前では、この関数を使うには分析ツールのアドインを有効にしておく必要があります。
[ツール]→[アドイン]を選択し、[アドイン]ダイアログボックスの「分析ツール」にチェックを入れます。
詳細な使い方は 稼動日数を求める(NETWORKDAYS関数・NETWORKDAYS.INTL関数) をご覧ください。 - たとえば、2025/4/28から2025/5/13の営業日数を求めます。
カレンダーはこのようになっています。

土日を除いた営業日数を求める
- 上の表の配置でしたら、=NETWORKDAYS(B6,B21) となります。
日付を指定するときは =NETWORKDAYS("2025/4/28","2025/5/13") とか =NETWORKDAYS(DATE(2025,4,28),DATE(2025,5,13)) とします。
これで、「12」が求められます。
土日祝日を除いた営業日数を求める
- 祝日はリストを準備します。
なお、祝日のリスト範囲には「祝日」と名前を定義しています。 - =NETWORKDAYS(B6,B21,祝日) とすると計算できます。
日付を指定するときは =NETWORKDAYS("2025/4/28","2025/5/13",祝日) とか =NETWORKDAYS(DATE(2025,4,28),DATE(2025,5,13),祝日) とします。
これで、「9」が求められます。
- 「成人の日」「海の日」「敬老の日」「体育の日」は第2月曜日、第3月曜日の祝日を計算で求めたいというケースがあります。
- 日曜日始まり〜土曜日始まりのカレンダーを作成してみます。

- 月の初め「1日」の曜日のWEEKDAY関数の返り値と第2月曜日、第3月曜日の関係は下図のようになります。
- 2025年10月の体育の日(第2月曜日)は=CHOOSE(WEEKDAY(A1),9,8,14,13,12,11,10)) で求めることができます。

- 2009年9月の敬老の日(第3月曜日)は第2月曜日+7となりますので、=CHOOSE(WEEKDAY(A1),9,8,14,13,12,11,10)+7) で求めることができます。

- 上の関係をWEEKDAY関数の種類を3にすると

更に、この関係の曜日が1つ右にずれて↓のようになれば都合がよいのですが・・・
つまり、「1日」の前の日の曜日を使えば都合がよくなります。
- 1日の前の日はDATE(年,月,0)となりますので、
- 第2月曜日は=14-WEEKDAY(DATE(YEAR(A1),MONTH(A1),0),3) とすることができます。
- 第3月曜日は+7すればよいので、=21-WEEKDAY(DATE(YEAR(A1),MONTH(A1),0),3) とすることができます。

スポンサードリンク
Home »
エクセル関数の技 »
日付に関する技/月末など指定日を求めたい
PageViewCounter

Since2006/2/27