• 締切済み

エクセルで土日祝と水曜日を除く3日後の数値を表示させる方法はありますか

一年間の営業サイクル日カレンダーを作成するにあたり、項目Aには土日祝日を除く3日後の日付を表示、項目Bには土日祝日と水曜日を除いた3日後の数字を表示させたいのですが、項目Aはhttp://www.relief.jp/itnote/archives/001105.php を参照し、作成できたのですが、水曜日を除く方法が見つからず、苦戦しております。 上記の祝日を除く方法のように、別シートで水曜日のみの日付を一つ一つ書き出してリンクさせるなどの方法もあるかと思いますが、もう少し簡単にできる方法などありませんでしょうか。 ちなみにExcel2003を使用しています。 お知恵を拝借できれば幸いです。 よろしくお願いします。

みんなの回答

  • n_na_tto
  • ベストアンサー率70% (75/107)
回答No.4

例えばE$1:E$30に祝日リストだとして... _____A_____B_____C___E_ 1___日付___項目A___項目B_2009/1/1_ 2_2/17(火)_2/20(金)_2/23(月)_2009/1/12_ 3_2/20(金)_2/25(水)_2/26(木)_2009/2/11_ 4_3/19(木)_3/25(水)_3/26(木)_2009/3/20_ ●祝日リストのとなりにさらに水曜日リストを追加して C2 =WORKDAY(A2,3,E$1:F$60) などと祝日リストの範囲を2列にするのが簡単だと思います。 祝日リストに名前定義をしているときは E$1:F$60を"祝日水リスト"などと別の名前で。 ●無理やり重い式でやるなら... B2 =WORKDAY(A2,3,E$1:E$30) 下方向・↓ A2の翌営業日、翌々営業日、翌々々営業日のどれかひとつが 水曜日なら、B2の翌営業日にする。 そうでなければB2と同じ。と考えて... C2 =WORKDAY(B2,(WEEKDAY(WORKDAY(A2,1,E$1:E$30))=4)+(WEEKDAY(WORKDAY(A2,2,E$1:E$30))=4)+(WEEKDAY(B2)=4),E$1:E$30) 下方向・↓...おすすめはできませんが。 ※余談ですが... B2の式の結果、本当に問題ありませんか? 【翌々々営業日】なら =WORKDAY(A2,3,E$1:E$30) で正しいのですが、 単純に【3日後が土日祝日ならその翌営業日】の場合は =WORKDAY(A2+2,1,E$1:E$30) となります。

ma0210
質問者

お礼

ご回答ありがとうございます。 やはり祝日と水曜日のリストを別に作成する方法が一番わかりやすいようですね。 一年間分の水曜日リストを作成するのはなかなか大変な作業ですが、面倒がらずにやってみようと思います。 ありがとうございました。

回答No.3

ユーザー定義関数を使う方法もありですね。 以下の過去ログにある No.3 の回答者さんが提示したユーザー定義関数 が、利用しやすいかと思います。 http://oshiete1.goo.ne.jp/qa3467869.html WORKDAY関数と同じように使うことができることと、曜日の指定が自由 に設定できますので、利用範囲が高いと思います。 関数を勉強したいとか、関数で処理したいのなら無理に薦めませんが、 アドインツールを利用するようなら同じようなことですから。 2行目の"1,4"だと水曜日と日曜日、祝日になりますが、"1,4,7"にすれば 土曜日も含むことができますので。  Const excptWD As String = "1,4,7"

ma0210
質問者

お礼

ご回答ありがとうございます。 使ってみることを試みたんですが、当方のスキル不足のため、使い方が途中からわからなくなってしまいました。 使いこなせると便利なようですね。

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.2

祝日を考慮せずに考えた場合 指定日が 月曜の場合・・・金曜日(+4) 火曜・水曜の場合・・・月曜日(+6・+5) 木曜の場合・・・火曜日(+5) 金曜~日曜の場合・・・木曜日(+6~+4) が目的の曜日となります WEEKDAY関数で本日の曜日を拾い出して INDEX関数で+する日数を選択 =日付+INDEX({4;6;5;5;6;5;4},WEEKDAY(日付,2)) とすると目的の日にちにはなります。 祝日がどんな形で参照されているのかが不明ですが、これに祝日を加味した計算式で修正すればよいのでは?

ma0210
質問者

お礼

ご回答ありがとうございます。 なるほど。これの数値を少し変えて近い形にはできましたが、これに祝日を加算した計算式にすることができませんでした。 私の説明が間違っていて申し訳なかったのですが、水曜日が休みのメーカーで、前日の納品が不可のため、その翌日の木曜日を飛ばす形になります。 月曜日・・・金曜日(+4) 火曜日・・・月曜日(+6) 水曜日・・・火曜日(+6) 木曜日・・・火曜日(+5) 金曜日・・・水曜日(+5) になります。 これで祝日を反映させる方法があればいいのですが、やり方がわかりません。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

WEEKDAY関数を利用されたら如何でしょうか。 =WEEKDAY(日付,2)とすると曜日を1~7の数値(月=1~日=7)として戻してくれます。詳しくはHELPを参照して下さい。 例えば、IF関数で「土日祝日を除く3日後の日付」が水(=3)ならば、日付を+1する数式を組み入れたら如何でしょうか。

ma0210
質問者

お礼

ご回答ありがとうございます。 エクセルに関しては初心者で、WEEKDAY関数をどのように数式に活用すればよいかわかりませんでした。 質問欄に初心者であるという明記をし忘れてしまい申し訳ないです。

関連するQ&A

専門家に質問してみよう