• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルでカレンダー作成 VBAが必要かも?)

エクセルでカレンダー作成 VBAが必要かも?

このQ&Aのポイント
  • エクセルでカレンダーを作成する際に、VBAが必要となる場合があります。
  • セルA1に今日の日付を入力し、セルB1に90日後の日付と曜日を表示させる設定を行うことができます。
  • ただし、90日後が土日や祭日だった場合は、前の日付の土日祭日以外で一番近い日にずらす必要があります。VBAを使用することで、90日後が祭日だった場合に自動的にずらす設定を行うことができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.7

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

その他の回答 (6)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.6

#05です 求めたい日付は90日後で、土日祝日ならその前営業日でしたね。 ならば式は =WORKDAY(A1+90,-1,B1:B40) だけでよいです。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.5

=WORKDAY(WORKDAY(A1+90,-1),1) でよいと思います。WORKDAY関数は土日を除いて何日後、何日前を求められます。90日後の日付(A1+90)の前営業日を一旦求めて、その日付の次営業日を求めると求める答えになりませんか? なお祝日も考慮するなら祝日リストを作成し(仮にB1:B40とします)、  =WORKDAY(WORKDAY(A1+90,-1),1,B1:B40) になります

noname#204879
noname#204879
回答No.4

》 たとえば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 天皇誕生日の振替

回答No.3

No.1で回答した者です。 土日の場合も1日引くと言うことを忘れてました(^^; すみません。忘れてください。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 たぶん、土日が休みなら、以下のやり方で出来るはずです。 もし、日曜日だけということになれば、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) となります。

回答No.1

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.html

関連するQ&A

専門家に質問してみよう