• ベストアンサー

EXCELの予定表で毎週月曜日に○を付けたいのですが(但し月曜日が営業

EXCELの予定表で毎週月曜日に○を付けたいのですが(但し月曜日が営業日でない時は翌営業日)、 営業日の条件をどうやって関数に組み入れていいのか思いつきません。 やはり別表で一度その日付を出して、VLOOKかMATCHで○を付けるのがいいのでしょうか。 よろしくお願いいたします。 毎週月曜日 =IF(WEEKDAY(H4)=2,"○","") に営業日の判断を加えると思うのですが・・・

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

  • ベストアンサー
noname#204879
noname#204879
回答No.4

=IF(H4=WORKDAY(H4-MOD(H4,7),1,holidays),"○","")

Teacha3104
質問者

お礼

理解できました。 ありがとうございました。 月~金まではこの式の応用でできますね。

Teacha3104
質問者

補足

出来ました! でもなぜうまくいくのかわからない・・・ 一日一日、条件を当てはめると、あっているのはわかるのですが・・・

その他の回答 (5)

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.6

> 解読できないので、関数を日本語で補足していただけないでしょうか。 これはI5に入れる式ですが =IF(AND(WEEKDAY(H4)=2,H5<>"○"),"○",IF(AND(WEEKDAY(I4)=2,WORKDAY(I4-1,1,$A$4:$A$6)=I4),"○","")) もし WEEKDAY(H4)=2 かつ H5が○でなければ○(前日が月曜なのに○でなければ○) でなく、もし WEEKDAY(I4)=2 かつ I4の前日から起算して翌日(I4当日)が営業日じゃないリストになく返ってきた値がI4と同じであれば○(月曜が営業日じゃないリストにあればその翌日が返るのでI4と一致しないので)→でなければ空白 という式になります。残念ながら火曜日が営業日じゃないということは考えていません。 ANo.4さんの式が火曜日も含め連続した休みにも対応してますね。 H4-MOD(H4,7)が前週の土曜日をさすと言うのは知りませんでした。

Teacha3104
質問者

お礼

kmetuさんの >H4-MOD(H4,7)が前週の土曜日をさすと言うのは知りませんでした。 で、ANo.4さんの式が理解できました。 ありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.5

この課題は難しいですね。 やってみましたが、下記ではどうかな。下記9/24日の件がダメなら無視してください。 9月の例 A2から A列は月中全日数を入れる。 B列は参考までに表示。 式はB2に =workday(A2-1,1,{"2010/9/20","2010/9/23"}) C列はC2に =IF(A2=workday(A2-1,1,{"2010/9/20","2010/9/23"}),A2,"") 月末暇で式を複写 C1は1スペース D列D2は =IF(C2="","",IF(C1="","●","")) 2010/9/1 2010/9/1 2010/9/1 2010/9/2 2010/9/2 2010/9/2 2010/9/3 2010/9/3 2010/9/3 2010/9/4 2010/9/6 2010/9/5 2010/9/6 2010/9/6 2010/9/6 2010/9/6 ● 2010/9/7 2010/9/7 2010/9/7 2010/9/8 2010/9/8 2010/9/8 2010/9/9 2010/9/9 2010/9/9 2010/9/10 2010/9/10 2010/9/10 2010/9/11 2010/9/13 2010/9/12 2010/9/13 2010/9/13 2010/9/13 2010/9/13 ● 2010/9/14 2010/9/14 2010/9/14 2010/9/15 2010/9/15 2010/9/15 2010/9/16 2010/9/16 2010/9/16 2010/9/17 2010/9/17 2010/9/17 2010/9/18 2010/9/21 2010/9/19 2010/9/21 2010/9/20 2010/9/21 2010/9/21 2010/9/21 2010/9/21 ● 2010/9/22 2010/9/22 2010/9/22 2010/9/23 2010/9/24 2010/9/24 2010/9/24 2010/9/24 ● 2010/9/25 2010/9/27 2010/9/26 2010/9/27 2010/9/27 2010/9/27 2010/9/27 ● 2010/9/28 2010/9/28 2010/9/28 2010/9/29 2010/9/29 2010/9/29 2010/9/30 2010/9/30 2010/9/30 9/24日のようなのが●になるが、休み明けと言うことにはならないかな。 前回から6日以上の間隔を入れたいが、関数では難しい(休み明けが3連休(月火水)後まで(木)とかいえるかどうか。) また上記C列を省きたいが、関数では式が複雑になるか、不可能だと思う。 VBAに逃げ込むかな。

Teacha3104
質問者

お礼

検討ありがとうございました。 VBAをあまり理解していないので、VBAについては今回はあきらめました。。

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.3

ANo1です 月曜日が営業日じゃないときは火曜日に○をつけるんですね忘れてました =IF(AND(WEEKDAY(H4)=2,H5<>"○"),"○",IF(AND(WEEKDAY(I4)=2,WORKDAY(I4-1,1,$A$4:$A$6)=I4),"○","")) こちらでいかがでしょう

Teacha3104
質問者

補足

解読できないので、関数を日本語で補足していただけないでしょうか。  

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.2

ANo1です 月曜が営業日じゃないときには火曜日に○をつけなければいけないのですね =IF(AND(WEEKDAY(H4)=2,H5<>"○"),"○",IF(AND(WEEKDAY(I4)=2,WORKDAY(I4-1,1,$A$4:$A$6)=I4),"○","")) こちらですね。

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

月曜が営業日でないリストを作成し たとえばA4からA6に営業日でない日付を入力 =IF(AND(WEEKDAY(H4)=2,WORKDAY(H4-1,1,A4:A6)=H4),"○","") とすればいかがでしょう。

関連するQ&A