月末の日を簡単に求められるEOMONTH関数についてご紹介しました。
このEOMONTH関数を知った方などから、
「土日をのぞいた月末最終日が出るようにしたいのですが・・・?」
「土曜日と日曜日を除外して、月末の最後の日を求めるにはどうしたらいいのでしょうか?」
といったご質問をいただくことがあります。
実務では、月末最終営業日に特定の業務を行うことがあったりするわけで、その日付を簡単に調べたいということです。
月末日を返すEOMONTH関数、曜日を数値として取得できるWEEKDAY関数、条件分岐を行うIF関数を併用すれば、土曜日・日曜日を除いた月末最終営業日を求めることができます。
※A1セルに日付を入力したときに、A6セルに月末最終営業日を表示する例 A6セルに
「=IF(WEEKDAY(EOMONTH(A1,0),2)=7,EOMONTH(A1,0)-2,IF(WEEKDAY(EOMONTH(A1,0),2)=6,EOMONTH(A1,0)-1,EOMONTH(A1,0)))」
という数式を入力する
月末日が
日曜日ならその2日前の日
土曜日ならその1日前の日
月曜日から金曜日に該当すればその日
を表示すればいいわけです。
これを数式にしたのが上記の
「=IF(WEEKDAY(EOMONTH(A1,0),2)=7,EOMONTH(A1,0)-2,IF(WEEKDAY(EOMONTH(A1,0),2)=6,EOMONTH(A1,0)-1,EOMONTH(A1,0)))」
です。
Excelの数式に慣れていない方は、入れ子になって、同じ関数が何度も並んでいるのを見ただけで拒否反応が出るかもしれませんが、そんな場合は途中に改行を入れたり、スペースを入れることを、おすすめします。
=IF(WEEKDAY(EOMONTH(A1,0),2)=7,
EOMONTH(A1,0)-2,
IF(WEEKDAY(EOMONTH(A1,0),2)=6,
EOMONTH(A1,0)-1,
EOMONTH(A1,0)
)
)
WEEKDAY関数の第2引数に「2」を指定すると、
日曜日は「7」
土曜日は「6」
といった数値が取得できます。
月末日が日曜日ならその2日前の日を返すのが
=IF(WEEKDAY(EOMONTH(A1,0),2)=7,
EOMONTH(A1,0)-2,
の部分です。
月末日が土曜日ならその1日前の日を返すのが、先の日曜日部分に続く
IF(WEEKDAY(EOMONTH(A1,0),2)=6,
EOMONTH(A1,0)-1,
です。
月曜日から金曜日に該当すればその日を返すのが、先の土曜日部分に続く
EOMONTH(A1,0)
です。
▼サンプルファイル(003142.xls 43KByte)ダウンロード
サンプルファイルのA6セルに上記の数式が入力してあります。
また、D6セルにA1セルから月末日を求める「=EOMONTH(A1,0)」という数式、D2:D5セル・D7:D9セルにその前後の日付を表示する数式、E2:E9セルには第2引数に「2」を指定したWEEKDAY関数を入力して、D2:D9セルに条件付き書式を設定してあります。
A1セルの値を変更して、E2:E9セルにどんな値が表示されるか、そしてA6セルにどんな日付が表示されるか、ご確認ください。
月末を求めるEOMONTH関数は、分析ツールアドインに含まれる関数です。2003までのExcelをお使いの方でサンプルファイルを利用しようとした時に#VALUE!エラーが表示される場合、分析ツールアドインのインストールを行ってください。
- Newer:×ウィンドーズ、○ウィンドウズ
- Older:2009年カレンダーの無料ダウンロード
Home » Excel(エクセル)の関数・数式の使い方 » 日付の処理・計算 » 土日を除いた月末最終営業日−EOMONTH関数・WEEKDAY関数