- ベストアンサー
Excel2000で土・日曜日を考慮した日付+αの設定方法
- Excel2000で土・日曜日を考慮した日付+αの設定方法を教えてください。現在セルB1には『A1に入力した日の月末日付+月末休日の場合は前日』が出るようにしてあります。
- セルA1には日付を入力し、セルB1にはA1の日付に対して条件を設定して月末日付になるようにしています。ただし、土・日曜日や月末が休日の場合は前日の日付を表示するようにしています。
- これに加えて、A1が25日以降の場合には翌月20日を表示し、翌月20日が休日の場合はその後の日付を表示するように設定したいです。可能でしょうか?別セルでも構いません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは! 休日は土日だけで祝日は考慮しなくて良いわけですよね? 一例です。 せっかく数式をお考えですが、 表示したいセルに =IF(DAY(A1)>24,WORKDAY(DATE(YEAR(A1),MONTH(A1)+1,20)-1,1),WORKDAY(EOMONTH(A1,0)+1,-1)) (エラー処理はしていません) としてみてはどうでしょうか? 尚、WORKDAY関数・EOMONTH関数を使用するにあたり、当方使用のExcel2003以前のバージョンでは メニュー → ツール → アドイン → 「分析ツール」にチェックを入れておく必要があります。 以上、参考になれば良いのですが 他に良い方法があればごめんなさいね。m(_ _)m
その他の回答 (1)
- nattocurry
- ベストアンサー率31% (587/1853)
=IF(DAY(A1)<25,DATE(YEAR(A1),MONTH(A1)+1,0)-IF(WEEKDAY(DATE(YEAR(A1),MONTH(A1)+1,0),2)>5,WEEKDAY(DATE(YEAR(A1),MONTH(A1)+1,0),2)-5),DATE(YEAR(A1),MONTH(A1)+1,20)+IF(WEEKDAY(DATE(YEAR(A1),MONTH(A1)+1,20),2)>5,8-WEEKDAY(DATE(YEAR(A1),MONTH(A1)+1,20),2),0)) 1つのセルで計算しようとすると、こんな感じですかね。 ただ、長すぎて、他の人がメンテナンスするときに困りそうですね。 作業セル(隠しセル)を使ったほうが、解りやすいかもしれませんね。 C1で、休日を無視した日付を計算して、 =IF(DAY(A1)<25,DATE(YEAR(A1),MONTH(A1)+1,0),DATE(YEAR(A1),MONTH(A1)+1,20)) B1に、休日の条件も踏まえた日付を表示するとか。 =IF(WEEKDAY(C1,2)<=5,C1,IF(DAY(A1)<25,C1-(WEEKDAY(C1,2)-5),C1+(8-WEEKDAY(C1,2)))) そうすれば、セルの数は増えますが、入力する式の長さは半分くらいに減ります。その上、他の人にも(あなた自身にも)解りやすくメンテナンスしやすいと思います。 C1は別のセルでも良いです。 目に付かないセルにするなり、文字を白くするなりしても良いでしょう。
お礼
ご回答ありがとうございました。 できました!! やはり1つのセルで処理しようとすると長~い式になってしまいますね。 >長すぎて、他の人がメンテナンスするときに困りそうですね 確かに・・・ 作業セル(隠しセル)を使った方の数式では、はじめ見た時はB1が理解できませんでしたが、調べたら1=月曜日から始まる場合もあるなんて初めて知りました。勉強になりました。 初心者の当方にはこちらの数式が分かりやすいと思いましたが1番の方の数式がシンプルなので、大変申し訳ありませんが1番の方をベストアンサーとさせていただきます。
お礼
ご回答ありがとうございました。 できました!! 当方のExcel2000でも「分析ツール」にチェックを入れておかないといけないようです。 「WORKDAY」「EOMONTH」はどちらも使い方が分からない関数なので提示していただいた数式は理解できませんが、非常にシンプルな数式で良いですね。