- ベストアンサー
エクセルでカレンダー作成 VBAが必要かも?
- エクセルでカレンダーを作成する際に、VBAが必要となる場合があります。
- セルA1に今日の日付を入力し、セルB1に90日後の日付と曜日を表示させる設定を行うことができます。
- ただし、90日後が土日や祭日だった場合は、前の日付の土日祭日以外で一番近い日にずらす必要があります。VBAを使用することで、90日後が祭日だった場合に自動的にずらす設定を行うことができます。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
#05です。再々訂正でもうしわけありません。 =WORKDAY(WORKDAY(A1+90,1),-1,B1:B40)
その他の回答 (6)
- zap35
- ベストアンサー率44% (1383/3079)
#05です 求めたい日付は90日後で、土日祝日ならその前営業日でしたね。 ならば式は =WORKDAY(A1+90,-1,B1:B40) だけでよいです。
- zap35
- ベストアンサー率44% (1383/3079)
=WORKDAY(WORKDAY(A1+90,-1),1) でよいと思います。WORKDAY関数は土日を除いて何日後、何日前を求められます。90日後の日付(A1+90)の前営業日を一旦求めて、その日付の次営業日を求めると求める答えになりませんか? なお祝日も考慮するなら祝日リストを作成し(仮にB1:B40とします)、 =WORKDAY(WORKDAY(A1+90,-1),1,B1:B40) になります
》 たとえば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 天皇誕生日の振替
- picopico_7
- ベストアンサー率30% (11/36)
No.1で回答した者です。 土日の場合も1日引くと言うことを忘れてました(^^; すみません。忘れてください。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 たぶん、土日が休みなら、以下のやり方で出来るはずです。 もし、日曜日だけということになれば、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) となります。
- picopico_7
- ベストアンサー率30% (11/36)
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列は非表示にしておく どんな機能を使うにしても祝日は予め調べておかなければいけないんじゃないかなぁと思います。面倒ですが。