- ベストアンサー
エクセル 関数 当月月末の直前営業日を日付で表示
関連の関数で下記までは調べられました。 月末の日付を表示 =EOMONTH(TODAY(),0) 土日祝を除く直前の営業日を表示 =WORKDAY(today(),+1,$D$1:$D$18) 当月月末で直前営業日を日付で表示したい場合の方法 どうぞよろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
興味がある内容でしたので既に回答されているお二方の意見を参考に色々と確かめていておかしな点を発見しましたのでご報告まで。 (ひょっとしたら当然の内容なのかもしれませんが) 「直前営業日」を額面どおり月末日より前(月末日は含まない)営業日と捉えるのか、最終営業日と捉えるのかで式が変わってきてしまう。 ANo2さんの情報をもとに =WORKDAY(EOMONTH(TODAY(), 0), -1, $D$1:$D$18) とすると、ANo2さんの回答どおり6/27が返る。 ここで、ANo1さんの言われている月末日も含めた「最終営業日」を求めようと =WORKDAY(EOMONTH(TODAY(), 0), 0, $D$1:$D$18) とすると6/30が返る。 これは一見正しいのだが、テストとして$D$1:$D$18の祭日リストに6/30を入れても、祝日をカウントせず6/30を返してしまう。 そこで =WORKDAY(EOMONTH(TODAY(), 0) + 1, -1, $D$1:$D$18) とすると きちんと6/27日を返すようになる。 どうもWORKDAY関数は開始日当日を含める場合は日数に0を指定するのではなく、翌日から1日前(もしくは前日から1日後)としなければいけないようです。
その他の回答 (3)
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
Masa2072さん曰く、 > ここで、ANo1さんの言われている月末日も含めた「最終営業日」を求めようと > =WORKDAY(EOMONTH(TODAY(), 0), 0, $D$1:$D$18) > とすると6/30が返る。 そう、workday関数には0日って指定しちゃダメ。土日祝日関係な く当日が帰ってくる。だって、翌営業日を返すのか前営業日を返す のか進行方向が特定できないでしょ。だから私の回答では「翌月1日 の1営業日前」って回避してます。
お礼
有難うございました参考にさせていただきます。
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
「月末の直前営業日」ってのは、今月でいうと27日ってことのよう な気がしますが、質問文ではtoday(),+1,と普通は「翌営業日」と 呼ばれる日を出してますねぇ。 workday関数の第二引数が-1であればちゃんと1営業日前を指します から、素直に今月末の1営業日前でいいんですよ。 もちろん、月の最後の営業日なら翌月1日の1営業日前でオッケー。
お礼
有難うございました参考にさせていただきます。
- jo-zen
- ベストアンサー率42% (848/1995)
アドインで分析ツールを組み込めば、EOMONTH関数、WORKDAY関数が使えますが、そうでなければ通常は組み込まれていない関数です。WORKDAY関数は休日を除いて+N日後の日付を求める関数ですから、あまり今回は意味がないと思います。 「当月月末で直前営業日」とは、「当月の最終営業日」ということですよね。そういうことであれば、月末の日付が営業日にあたらなければ、1日前はどうか、それでも当たらなければその1日前というようにIF関数を使って調べるしかないかと思います。その際、多分$D$1:$D$18に休日の一覧があるのでしょうから、MATCH関数を使って該当があるかどうかで判定すればいいかと思います。
お礼
有難うございました参考にさせていただきます。
お礼
大変参考になりました、有難うございました。また機会がございました節もよろしくおねがいします。