• ベストアンサー

Excelで「週の最終営業日」

会社のExcelでつくったスケジュール表にて、週の最終営業日部分の書式を変える(文字色をかえる)必要があります。 その際、「週の最終営業日」を表す数式を教えてください。 ちなみに会社は今土日祝が定休日ではありますが、今後土日でなくなる可能性もあるため、WORKDAYは使わず、別表に、土日を含めた休日表をつくり、条件付書式で制御するかたちです。 しくお願いします。

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

  • ベストアンサー
  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.5

> 別表に、土日を含めた休日表をつくり、条件付書式で制御する 「休日表」と言う名前を定義しておいて、 (1)例えばB1セルの条件付き書式を「数式を使用して・・」にして   =COUNTIF(休日表,B1)>0   文字色=赤 で休日の文字を赤くできます。 (2)同様にB1セルの条件付き書式を「数式を使用して・・」にして   =COUNTIF(休日表,B1+1)>0  文字色=青 としてやることで、「翌日が休日の日」=「週の最終営業日」を青に出来ます。 条件付き書式の順番を間違えないようにしておけば、同時に使用することもできますよ。 その場合は(1)を上に持っていってやってくださいね。 問題は、祝前日も青くなっちゃうことですね。 (例えば土日定休で金曜が青、その週の木曜が祝日なら水曜も青くなるなど。) なんとか「週の真ん中の祝日だから考慮しなくていいよ」な条件があればいいですけど。

uekido
質問者

お礼

ありがとうございます。 はい、そのとおり、週の真ん中のお休みが入っちゃうのが悩みなのです。 むしろ「週の最初の営業日の直前の、塗ってないセル」とかを指定した方が良いのでしょうか。

その他の回答 (4)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.4

こんにちは。 要するに次の休日の前日ということで A1セルに年/月/日を記入 別に土日休業年/月/日を昇順で並べた一覧表を作成、休日一覧と名前を付けておいて =IF(COUNTIF(休日一覧,A1),"",INDEX(休日一覧,MATCH(A1,休日一覧,1)+1)-1) という日付と等しい日付に色を塗るように設定しておきます。

uekido
質問者

お礼

ありがとうございます。 私のアタマが追いついていなかったら申し訳ないですが、この場合、水曜日などにいきなり休みが入った場合って、対応できるでしょうか。 そこがいちばん悩みなんです・・・。

noname#175206
noname#175206
回答No.3

 ちょっと説明するのが長すぎて厄介そうです。 http://www.dotup.org/uploda/www.dotup.org3536279.xls.html に、日付と曜日の数式、それと土日の色を変える「条件付き書式」設定したエクセルファイルをアップロードしてみました。D1セルの日付を変えると、残りのセルが全て変わります。  もし、お役に立ちそうであればいいのですが。上記でご質問があれば、補足欄で仰せつけください。

uekido
質問者

お礼

ありがとうございます。 予定表のサンプルいただきまして恐縮です。 しかしここ(予定表をつくり、土日セルの色をかえる)までは、私もできていて・・・。 ここでは、週の最終営業日というのをどう指定したものか、というのが質問主旨でありましたが、それについてはおそらく、いただいたファイルでは触れられていないのではないかと思います。 しかし参考になりました。ありがとうございます。

回答No.2

週の始まりを何曜日にするのかを定義する費用があろう。さすれば事は簡単、如何かな?? WEEKNUM関数の使い方 WEEKNUM関数は指定した日付がその年の第何週目に当たるかを返します。 分析ツールアドインがエクセルに組み込まれていない場合はWEEKNUM関数は使用できません。 エクセルに分析ツールアドインが組み込まれていない場合、WEEKNUM関数を使用するとエラー値#NAME?が返されます。 引数の指定方法 シリアル値 日付を表すシリアル値を指定 週の基準 週の始まりを何曜日にするか1から2で指定 1(省略) 週の始まりを日曜日とします 2の場合 週の始まりを月曜日とします

uekido
質問者

お礼

ありがとうございます。 えっ・・・?簡単ですか・・・? WEEKDAY関数でも、週の始まり日を何曜日にするかの引数は設定できると思いますが、残念ながら私はそれで解決できませんでした。 それと、どのような環境で使用するか読めないため、アドインを使用するのは避けたいので、今回はWEEKNUM関数を使う方法は採れないです。 でも参考になりました。ありがとうございます。

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

別表の土日を含めた休日表の名前を休日と定義して、例えばC3セルの条件付書式に、 =VLOOKUP(C3,休日,1,FALSE)

uekido
質問者

お礼

ありがとうございます。 す、すみません、VLOOKUPを使いこなせていないもので、確認したいのですが、たとえばC3セルに日付が入っている場合、「C3の日付と、「休日」表の中の「1」(一番左)列が完全一致していた場合」という意味で解釈して良いでしょうか。 これを条件付書式に設定してもなぜか動作しないのですが、Excelのバージョンの問題などもあるかも知れません。もう少し検証します。

関連するQ&A