プロが教える店舗&オフィスのセキュリティ対策術

仕事で使うのですが、セルA1に今日の日付を入れた場合、B1セルに90日後の日付及曜日が自動で、出るよう設定しました。そこで90日後が、土日、祭日及び振り替え休日だったら、前の日の、土日祭日以外の一番近い日にずらさなければいけません。
設定方法も色々ありますが、私のレベルから以下の様に設定しました・
1)セルB1に「 =A1+90 」と書式設定で、「 yyyy/m/d(aaa) 」と入力
2)A1に今日の日付の2006/12/14と入力
3)B1には2007/3/14(水)とでます。
4)そこで土日は曜日で休日と分かりますが、土日以外の祭日を判断するのはイチイチ、カレンダーを見なければいけなくて、人的処理になりミスもでます。
5)あらかじめパソコンの中に一年分のカレンダーを設定しとくと、90日後が祭日だったら、たとえば2006/3/21(春分の日)とでるような設定はできますか?
6)VBAが必要でした、プログラムを教えて頂きたいです。
7)良いURLがありましたら、教えてください。

宜しくお願いいたします。

A 回答 (7件)

#05です。

再々訂正でもうしわけありません。
 =WORKDAY(WORKDAY(A1+90,1),-1,B1:B40)
    • good
    • 0

#05です


求めたい日付は90日後で、土日祝日ならその前営業日でしたね。

ならば式は
=WORKDAY(A1+90,-1,B1:B40)
だけでよいです。
    • good
    • 0

=WORKDAY(WORKDAY(A1+90,-1),1)


でよいと思います。WORKDAY関数は土日を除いて何日後、何日前を求められます。90日後の日付(A1+90)の前営業日を一旦求めて、その日付の次営業日を求めると求める答えになりませんか?

なお祝日も考慮するなら祝日リストを作成し(仮にB1:B40とします)、
 =WORKDAY(WORKDAY(A1+90,-1),1,B1:B40)
になります
    • good
    • 0

》 たとえば2006/3/21(春分の日)とでるような設定はできますか?



次の式はセル A1 に 2006/12/21 と入力すると、セル B1 に 2007/3/21(春分の日) と表示されます。

B1: =IF(ISERROR(VLOOKUP(A2+90,holidays,2,FALSE)),A2+90,TEXT(A2+90,"yyyy/m/d")&"("&VLOOKUP(A2+90,holidays,2,FALSE)&")")

ただし、次の表を空きセルの何処かに入力して、当該表に holidays という名前を付けています。

2006/12/23 天皇誕生日
2007/01/01 元日
2007/01/08 成人の日
2007/02/12 建国記念の日の振替
2007/03/21 春分の日
2007/04/30 みどりの日の振替
2007/05/03 憲法記念日
2007/05/04 国民の休日
2007/05/05 こどもの日
2007/07/16 海の日
2007/09/17 敬老の日
2007/09/24 秋分の日の振替
2007/10/08 体育の日
2007/11/03 文化の日
2007/11/23 勤労感謝の日
2007/12/24 天皇誕生日の振替
    • good
    • 0

No.1で回答した者です。


土日の場合も1日引くと言うことを忘れてました(^^;
すみません。忘れてください。
    • good
    • 0

こんばんは。



たぶん、土日が休みなら、以下のやり方で出来るはずです。
もし、日曜日だけということになれば、VBAのユーザー定義関数が必要になると思います。
なお、下の祭日データは、計算で出されたものですから、必ずしも正しいとは限りません。


=WORKDAY(B1,-1,H2:H17)

H2~H17 に祭日データ

休日データ
2006/12/23
2007/1/1
2007/1/8
2007/2/12
2007/3/21
2007/4/30
2007/5/3
2007/5/4
2007/5/5
2007/7/16
2007/9/17
2007/9/24
2007/10/8
2007/11/3
2007/11/23
2007/12/24

また、土日以外の祭日判定は、上記のデータを使って

=IF(AND(WEEKDAY(B1,2)<6,ISERROR(MATCH(B1,H2:H17,0))=FALSE),"土日以外の祭日",B1)

となります。
    • good
    • 0

VBAを使用すればもっとスマートなやり方があるかもしれませんが思いつく簡単なやり方を書かせてもらいますね。



1)ネットで今年の祝日を調べておく(参照URL)
2)ネットで調べた祝日をセルA1,A2・・・に記しておく
3)セルB1には本日の日付を入力
4)セルC1には「 =A1+90 」を入力
5)セルD1には「IF(VLOOKUP(B1,A1:A3,1,FALSE),B1-1,B1)」を入力
  ※式内のA1:A3は祝日を入力した範囲
   祝日が全部で20日間あったらA1:A20となります
6)A列とC列は非表示にしておく

どんな機能を使うにしても祝日は予め調べておかなければいけないんじゃないかなぁと思います。面倒ですが。

参考URL:http://www8.cao.go.jp/chosei/shukujitsu/gaiyou.h …
    • good
    • 0

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