アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在セルB1には『A1に入力した日の月末日付+月末休日の場合は前日』が出るようにしてあります。

セルA1 = 日付
セルB1 = IF(WEEKDAY(DATE(YEAR(A1),MONTH(A1)+1,0))=1,(DATE(YEAR(A1),MONTH(A1)+1,0))-2,IF(WEEKDAY(DATE(YEAR(A1),MONTH(A1)+1,0))=7,(DATE(YEAR(A1),MONTH(A1)+1,0))-1,DATE(YEAR(A1),MONTH(A1)+1,0)))

ここに『A1が25日以降の場合は翌月20日+翌月20日が休日の場合は後日』という設定を加えたいのですが、可能でしょうか?

 ・A1 = 2011/07/10 → (結果) B1 = 2011/07/29(金)
 ・A1 = 2011/07/25 → (結果) B1 = 2011/08/22(月)

どうしても不可能であれば別セル(C1など)でも構いません。

A 回答 (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
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
できました!!
当方のExcel2000でも「分析ツール」にチェックを入れておかないといけないようです。
「WORKDAY」「EOMONTH」はどちらも使い方が分からない関数なので提示していただいた数式は理解できませんが、非常にシンプルな数式で良いですね。

お礼日時:2011/06/30 16:48

=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は別のセルでも良いです。
目に付かないセルにするなり、文字を白くするなりしても良いでしょう。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
できました!!
やはり1つのセルで処理しようとすると長~い式になってしまいますね。

>長すぎて、他の人がメンテナンスするときに困りそうですね
確かに・・・

作業セル(隠しセル)を使った方の数式では、はじめ見た時はB1が理解できませんでしたが、調べたら1=月曜日から始まる場合もあるなんて初めて知りました。勉強になりました。


初心者の当方にはこちらの数式が分かりやすいと思いましたが1番の方の数式がシンプルなので、大変申し訳ありませんが1番の方をベストアンサーとさせていただきます。

お礼日時:2011/06/30 16:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!